// SPDX-License-Identifier: GPL-2.0+
/*
 * Samsung's Exynos7880 SoC pin-mux and pin-config device tree source
 *
 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 * Copyright (c) 2020 Dzmitry Sankouski (dsankouski@gmail.com)
 *
 * Samsung's Exynos7880 SoC pin-mux and pin-config options are listed as device
 * tree nodes are listed in this file.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

/ {
	/* ALIVE */
	pinctrl@139F0000 {
		uart2_bus: uart2-bus {
			samsung,pins = "gpa1-1", "gpa1-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
		};

		dwmmc2_cd_ext_irq: dwmmc2_cd_ext_irq {
			samsung,pins = "gpa3-3";
			samsung,pin-function = <0xf>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <4>;
		};

		key_power: key-power {
			samsung,pins = "gpa0-0";
			samsung,pin-function = <0xf>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <0>;
		};

		key_voldown: key-voldown {
			samsung,pins = "gpa2-1";
			samsung,pin-function = <0xf>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <0>;
		};

		key_volup: key-volup {
			samsung,pins = "gpa2-0";
			samsung,pin-function = <0xf>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <0>;
		};

		key_home: key-home {
			samsung,pins = "gpa1-7";
			samsung,pin-function = <0xf>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <0>;
		};
	};

	/* TOP */
	pinctrl@139B0000 {
		i2c0_bus: i2c0-bus {
			samsung,pins = "gpc1-1", "gpc1-0";
			samsung,pin-function = <2>;
		};

		sd0_rst: sd0_rst {
			samsung,pins = "gpc0-2";
			samsung,pin-function = <0>;
		};
	};

	/* DISP/AUD */
	pinctrl@148C0000 {
		i2s_pmic_bus: i2s-pmic-bus {
			samsung,pins = "gpz1-0", "gpz1-1", "gpz1-2", "gpz1-3", "gpz1-4";
			samsung,pin-function = <2>;
			samsung,pin-pud = <1>;
			samsung,pin-drv = <0>;
		};

		i2s_pmic_bus_idle: i2s-pmic-bus_idle {
			samsung,pins = "gpz1-0", "gpz1-1", "gpz1-2", "gpz1-3", "gpz1-4";
			samsung,pin-function = <0>;
			samsung,pin-pud = <1>;
			samsung,pin-drv = <0>;
		};
	};

	/* FSYS0 */
	pinctrl@13750000 {
		sd0_clk: sd0-clk {
			samsung,pins = "gpr0-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <2>;
		};

		sd0_cmd: sd0-cmd {
			samsung,pins = "gpr0-1";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <2>;
		};

		sd0_rdqs: sd0-rdqs {
			samsung,pins = "gpr0-2";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <2>;
		};

		sd0_clk_fast_slew_rate_1x: sd0-clk_fast_slew_rate_1x {
			samsung,pins = "gpr0-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <0>;
		};

		sd0_clk_fast_slew_rate_2x: sd0-clk_fast_slew_rate_2x {
			samsung,pins = "gpr0-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <1>;
		};

		sd0_clk_fast_slew_rate_3x: sd0-clk_fast_slew_rate_3x {
			samsung,pins = "gpr0-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <2>;
		};

		sd0_clk_fast_slew_rate_4x: sd0-clk_fast_slew_rate_4x {
			samsung,pins = "gpr0-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <3>;
		};

		sd0_clk_fast_slew_rate_5x: sd0-clk_fast_slew_rate_5x {
			samsung,pins = "gpr0-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <4>;
		};

		sd0_clk_fast_slew_rate_6x: sd0-clk_fast_slew_rate_6x {
			samsung,pins = "gpr0-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <5>;
		};

		sd0_bus1: sd0-bus-width1 {
			samsung,pins = "gpr1-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <3>;
			samsung,pin-drv = <2>;
		};

		sd0_bus4: sd0-bus-width4 {
			samsung,pins = "gpr1-1", "gpr1-2", "gpr1-3";
			samsung,pin-function = <2>;
			samsung,pin-pud = <3>;
			samsung,pin-drv = <2>;
		};

		sd0_bus8: sd0-bus-width8 {
			samsung,pins = "gpr1-4", "gpr1-5", "gpr1-6", "gpr1-7";
			samsung,pin-function = <2>;
			samsung,pin-pud = <3>;
			samsung,pin-drv = <2>;
		};

		sd1_clk: sd1-clk {
			samsung,pins = "gpr2-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <2>;
		};

		sd1_cmd: sd1-cmd {
			samsung,pins = "gpr2-1";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <2>;
		};

		sd1_bus1: sd1-bus-width1 {
			samsung,pins = "gpr3-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <3>;
			samsung,pin-drv = <2>;
			samsung,pin-con-pdn = <2>;
			samsung,pin-pud-pdn = <3>;
		};

		sd1_bus4: sd1-bus-width4 {
			samsung,pins = "gpr3-1", "gpr3-2", "gpr3-3";
			samsung,pin-function = <2>;
			samsung,pin-pud = <3>;
			samsung,pin-drv = <2>;
			samsung,pin-con-pdn = <2>;
			samsung,pin-pud-pdn = <3>;
		};

		sd2_clk: sd2-clk {
			samsung,pins = "gpr4-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <2>;
		};

		sd2_cmd: sd2-cmd {
			samsung,pins = "gpr4-1";
			samsung,pin-function = <2>;
			samsung,pin-pud = <3>;
			samsung,pin-drv = <2>;
		};

		sd2_bus1: sd2-bus-width1 {
			samsung,pins = "gpr4-2";
			samsung,pin-function = <2>;
			samsung,pin-pud = <3>;
			samsung,pin-drv = <2>;
		};

		sd2_bus4: sd2-bus-width4 {
			samsung,pins = "gpr4-3", "gpr4-4", "gpr4-5";
			samsung,pin-function = <2>;
			samsung,pin-pud = <3>;
			samsung,pin-drv = <2>;
		};

		sd2_clk_output: sd2-clk-output {
			samsung,pins = "gpr4-0";
			samsung,pin-function = <1>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <2>;
		};

		sd2_cmd_output: sd2-cmd-output {
			samsung,pins = "gpr4-1";
			samsung,pin-function = <1>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <2>;
		};

		sd2_clk_fast_slew_rate_1x: sd2-clk_fast_slew_rate_1x {
			samsung,pins = "gpr4-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <0>;
		};

		sd2_clk_fast_slew_rate_2x: sd2-clk_fast_slew_rate_2x {
			samsung,pins = "gpr4-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <1>;
		};

		sd2_clk_fast_slew_rate_3x: sd2-clk_fast_slew_rate_3x {
			samsung,pins = "gpr4-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <2>;
		};

		sd2_clk_fast_slew_rate_4x: sd2-clk_fast_slew_rate_4x {
			samsung,pins = "gpr4-0";
			samsung,pin-function = <2>;
			samsung,pin-pud = <0>;
			samsung,pin-drv = <3>;
		};
	};
};
