/*
 * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

&msmgpio {

	blsp1_uart1_default: blsp1_uart1_default {
		pinmux {
			function = "blsp_uart1";
			//	TX, RX, CTS_N, RTS_N
			pins = "gpio0", "gpio1",
			       "gpio2", "gpio3";
		};
		pinconf {
			pins = "gpio0", "gpio1",
			       "gpio2", "gpio3";
			drive-strength = <16>;
			bias-disable;
		};
	};

	blsp1_uart1_sleep: blsp1_uart1_sleep {
		pinmux {
			function = "gpio";
			pins = "gpio0", "gpio1",
			       "gpio2", "gpio3";
		};
		pinconf {
			pins = "gpio0", "gpio1",
			       "gpio2", "gpio3";
			drive-strength = <2>;
			bias-pull-down;
		};
	};

	blsp1_uart2_default: blsp1_uart2_default {
		pinmux {
			function = "blsp_uart2";
			pins = "gpio4", "gpio5";
		};
		pinconf {
			pins = "gpio4", "gpio5";
			drive-strength = <16>;
			bias-disable;
		};
	};

	blsp1_uart2_sleep: blsp1_uart2_sleep {
		pinmux {
			function = "gpio";
			pins = "gpio4", "gpio5";
		};
		pinconf {
			pins = "gpio4", "gpio5";
			drive-strength = <2>;
			bias-pull-down;
		};
	};

	spi1_default: spi1_default {
		pinmux {
			function = "blsp_spi1";
			pins = "gpio0", "gpio1", "gpio3";
		};
		pinmux_cs {
			function = "gpio";
			pins = "gpio2";
		};
		pinconf {
			pins = "gpio0", "gpio1", "gpio3";
			drive-strength = <12>;
			bias-disable;
		};
		pinconf_cs {
			pins = "gpio2";
			drive-strength = <16>;
			bias-disable;
			output-high;
		};
	};

	spi1_sleep: spi1_sleep {
		pinmux {
			function = "gpio";
			pins = "gpio0", "gpio1", "gpio2", "gpio3";
		};
		pinconf {
			pins = "gpio0", "gpio1", "gpio2", "gpio3";
			drive-strength = <2>;
			bias-pull-down;
		};
	};

	spi2_default: spi2_default {
		pinmux {
			function = "blsp_spi2";
			pins = "gpio4", "gpio5", "gpio7";
		};
		pinmux_cs {
			function = "gpio";
			pins = "gpio6";
		};
		pinconf {
			pins = "gpio4", "gpio5", "gpio7";
			drive-strength = <12>;
			bias-disable;
		};
		pinconf_cs {
			pins = "gpio6";
			drive-strength = <16>;
			bias-disable;
			output-high;
		};
	};

	spi2_sleep: spi2_sleep {
		pinmux {
			function = "gpio";
			pins = "gpio4", "gpio5", "gpio6", "gpio7";
		};
		pinconf {
			pins = "gpio4", "gpio5", "gpio6", "gpio7";
			drive-strength = <2>;
			bias-pull-down;
		};
	};

	spi3_default: spi3_default {
		pinmux {
			function = "blsp_spi3";
			pins = "gpio8", "gpio9", "gpio11";
		};
		pinmux_cs {
			function = "gpio";
			pins = "gpio10";
		};
		pinconf {
			pins = "gpio8", "gpio9", "gpio11";
			drive-strength = <12>;
			bias-disable;
		};
		pinconf_cs {
			pins = "gpio10";
			drive-strength = <16>;
			bias-disable;
			output-high;
		};
	};

	spi3_sleep: spi3_sleep {
		pinmux {
			function = "gpio";
			pins = "gpio8", "gpio9", "gpio10", "gpio11";
		};
		pinconf {
			pins = "gpio8", "gpio9", "gpio10", "gpio11";
			drive-strength = <2>;
			bias-pull-down;
		};
	};

	spi4_default: spi4_default {
		pinmux {
			function = "blsp_spi4";
			pins = "gpio12", "gpio13", "gpio15";
		};
		pinmux_cs {
			function = "gpio";
			pins = "gpio14";
		};
		pinconf {
			pins = "gpio12", "gpio13", "gpio15";
			drive-strength = <12>;
			bias-disable;
		};
		pinconf_cs {
			pins = "gpio14";
			drive-strength = <16>;
			bias-disable;
			output-high;
		};
	};

	spi4_sleep: spi4_sleep {
		pinmux {
			function = "gpio";
			pins = "gpio12", "gpio13", "gpio14", "gpio15";
		};
		pinconf {
			pins = "gpio12", "gpio13", "gpio14", "gpio15";
			drive-strength = <2>;
			bias-pull-down;
		};
	};

	spi5_default: spi5_default {
		pinmux {
			function = "blsp_spi5";
			pins = "gpio16", "gpio17", "gpio19";
		};
		pinmux_cs {
			function = "gpio";
			pins = "gpio18";
		};
		pinconf {
			pins = "gpio16", "gpio17", "gpio19";
			drive-strength = <12>;
			bias-disable;
		};
		pinconf_cs {
			pins = "gpio18";
			drive-strength = <16>;
			bias-disable;
			output-high;
		};
	};

	spi5_sleep: spi5_sleep {
		pinmux {
			function = "gpio";
			pins = "gpio16", "gpio17", "gpio18", "gpio19";
		};
		pinconf {
			pins = "gpio16", "gpio17", "gpio18", "gpio19";
			drive-strength = <2>;
			bias-pull-down;
		};
	};

	spi6_default: spi6_default {
		pinmux {
			function = "blsp_spi6";
			pins = "gpio20", "gpio21", "gpio23";
		};
		pinmux_cs {
			function = "gpio";
			pins = "gpio22";
		};
		pinconf {
			pins = "gpio20", "gpio21", "gpio23";
			drive-strength = <12>;
			bias-disable;
		};
		pinconf_cs {
			pins = "gpio22";
			drive-strength = <16>;
			bias-disable;
			output-high;
		};
	};

	spi6_sleep: spi6_sleep {
		pinmux {
			function = "gpio";
			pins = "gpio20", "gpio21", "gpio22", "gpio23";
		};
		pinconf {
			pins = "gpio20", "gpio21", "gpio22", "gpio23";
			drive-strength = <2>;
			bias-pull-down;
		};
	};

	i2c2_default: i2c2_default {
		pinmux {
			function = "blsp_i2c2";
			pins = "gpio6", "gpio7";
		};
		pinconf {
			pins = "gpio6", "gpio7";
			drive-strength = <16>;
			bias-disable = <0>;
		};
	};

	i2c2_sleep: i2c2_sleep {
		pinmux {
			function = "gpio";
			pins = "gpio6", "gpio7";
		};
		pinconf {
			pins = "gpio6", "gpio7";
			drive-strength = <2>;
			bias-disable = <0>;
		};
	};

	i2c4_default: i2c4_default {
		pinmux {
			function = "blsp_i2c4";
			pins = "gpio14", "gpio15";
		};
		pinconf {
			pins = "gpio14", "gpio15";
			drive-strength = <16>;
			bias-disable = <0>;
		};
	};

	i2c4_sleep: i2c4_sleep {
		pinmux {
			function = "gpio";
			pins = "gpio14", "gpio15";
		};
		pinconf {
			pins = "gpio14", "gpio15";
			drive-strength = <2>;
			bias-disable = <0>;
		};
	};

	i2c6_default: i2c6_default {
		pinmux {
			function = "blsp_i2c6";
			pins = "gpio22", "gpio23";
		};
		pinconf {
			pins = "gpio22", "gpio23";
			drive-strength = <16>;
			bias-disable = <0>;
		};
	};

	i2c6_sleep: i2c6_sleep {
		pinmux {
			function = "gpio";
			pins = "gpio22", "gpio23";
		};
		pinconf {
			pins = "gpio22", "gpio23";
			drive-strength = <2>;
			bias-disable = <0>;
		};
	};

	sdhc2_cd_pin {
		sdc2_cd_on: cd_on {
			pinmux {
				function = "gpio";
				pins = "gpio38";
			};
			pinconf {
				pins = "gpio38";
				drive-strength = <2>;
				bias-pull-up;
			};
		};
		sdc2_cd_off: cd_off {
			pinmux {
				function = "gpio";
				pins = "gpio38";
			};
			pinconf {
				pins = "gpio38";
				drive-strength = <2>;
				bias-disable;
			};
		};
	};

	pmx_sdc1_clk {
		sdc1_clk_on: clk_on {
			pinmux {
				pins = "sdc1_clk";
			};
			pinconf {
				pins = "sdc1_clk";
				bias-disable;
				drive-strength = <16>;
			};
		};
		sdc1_clk_off: clk_off {
			pinmux {
				pins = "sdc1_clk";
			};
			pinconf {
				pins = "sdc1_clk";
				bias-disable;
				drive-strength = <2>;
			};
		};
	};

	pmx_sdc1_cmd {
		sdc1_cmd_on: cmd_on {
			pinmux {
				pins = "sdc1_cmd";
			};
			pinconf {
				pins = "sdc1_cmd";
				bias-pull-up;
				drive-strength = <10>;
			};
		};
		sdc1_cmd_off: cmd_off {
			pinmux {
				pins = "sdc1_cmd";
			};
			pinconf {
				pins = "sdc1_cmd";
				bias-pull-up;
				drive-strength = <2>;
			};
		};
	};

	pmx_sdc1_data {
		sdc1_data_on: data_on {
			pinmux {
				pins = "sdc1_data";
			};
			pinconf {
				pins = "sdc1_data";
				bias-pull-up;
				drive-strength = <10>;
			};
		};
		sdc1_data_off: data_off {
			pinmux {
				pins = "sdc1_data";
			};
			pinconf {
				pins = "sdc1_data";
				bias-pull-up;
				drive-strength = <2>;
			};
		};
	};

	pmx_sdc2_clk {
		sdc2_clk_on: clk_on {
			pinmux {
				pins = "sdc2_clk";
			};
			pinconf {
				pins = "sdc2_clk";
				bias-disable;
				drive-strength = <16>;
			};
		};
		sdc2_clk_off: clk_off {
			pinmux {
				pins = "sdc2_clk";
			};
			pinconf {
				pins = "sdc2_clk";
				bias-disable;
				drive-strength = <2>;
			};
		};
	};

	pmx_sdc2_cmd {
		sdc2_cmd_on: cmd_on {
			pinmux {
				pins = "sdc2_cmd";
			};
			pinconf {
				pins = "sdc2_cmd";
				bias-pull-up;
				drive-strength = <10>;
			};
		};
		sdc2_cmd_off: cmd_off {
			pinmux {
				pins = "sdc2_cmd";
			};
			pinconf {
				pins = "sdc2_cmd";
				bias-pull-up;
				drive-strength = <2>;
			};
		};
	};

	pmx_sdc2_data {
		sdc2_data_on: data_on {
			pinmux {
				pins = "sdc2_data";
			};
			pinconf {
				pins = "sdc2_data";
				bias-pull-up;
				drive-strength = <10>;
			};
		};
		sdc2_data_off: data_off {
			pinmux {
				pins = "sdc2_data";
			};
			pinconf {
				pins = "sdc2_data";
				bias-pull-up;
				drive-strength = <2>;
			};
		};
	};

	ext-codec-lines {
		ext_codec_lines_act: lines_on {
			pinmux {
				function = "gpio";
				pins = "gpio67";
			};
			pinconf {
				pins = "gpio67";
				drive-strength = <8>;
				bias-disable;
				output-high;
			};
		};
		ext_codec_lines_sus: lines_off {
			pinmux {
				function = "gpio";
				pins = "gpio67";
			};
			pinconf {
				pins = "gpio67";
				drive-strength = <2>;
				bias-disable;
			};
		};
	};

	cdc-pdm-lines {
		cdc_pdm_lines_act: pdm_lines_on {
			pinmux {
				function = "cdc_pdm0";
				pins = "gpio63", "gpio64", "gpio65", "gpio66",
				       "gpio67", "gpio68";
			};
			pinconf {
				pins = "gpio63", "gpio64", "gpio65", "gpio66",
				       "gpio67", "gpio68";
				drive-strength = <8>;
				bias-pull-none;
			};
		};
		cdc_pdm_lines_sus: pdm_lines_off {
			pinmux {
				function = "cdc_pdm0";
				pins = "gpio63", "gpio64", "gpio65", "gpio66",
				       "gpio67", "gpio68";
			};
			pinconf {
				pins = "gpio63", "gpio64", "gpio65", "gpio66",
				       "gpio67", "gpio68";
				drive-strength = <2>;
				bias-disable;
			};
		};
	};

	ext-pri-tlmm-lines {
		ext_pri_tlmm_lines_act: ext_pa_on {
			pinmux {
				function = "pri_mi2s";
				pins = "gpio113", "gpio114", "gpio115",
				       "gpio116";
			};
			pinconf {
				pins = "gpio113", "gpio114", "gpio115",
				       "gpio116";
				drive-strength = <8>;
				bias-pull-none;
			};
		};

		ext_pri_tlmm_lines_sus: ext_pa_off {
			pinmux {
				function = "pri_mi2s";
				pins = "gpio113", "gpio114", "gpio115",
				       "gpio116";
			};
			pinconf {
				pins = "gpio113", "gpio114", "gpio115",
				       "gpio116";
				drive-strength = <2>;
				bias-disable;
			};
		};
	};

	ext-pri-ws-line {
		ext_pri_ws_act: ext_pa_on {
			pinmux {
				function = "pri_mi2s_ws";
				pins = "gpio110";
			};
			pinconf {
				pins = "gpio110";
				drive-strength = <8>;
				bias-pull-none;
			};
		};

		ext_pri_ws_sus: ext_pa_off {
			pinmux {
				function = "pri_mi2s_ws";
				pins = "gpio110";
			};
			pinconf {
				pins = "gpio110";
				drive-strength = <2>;
				bias-disable;
			};
		};
	};

	ext-mclk-tlmm-lines {
		ext_mclk_tlmm_lines_act: mclk_lines_on {
			pinmux {
				function = "pri_mi2s";
				pins = "gpio116";
			};
			pinconf {
				pins = "gpio116";
				drive-strength = <8>;
				bias-pull-none;
			};
		};
		ext_mclk_tlmm_lines_sus: mclk_lines_off {
			pinmux {
				function = "pri_mi2s";
				pins = "gpio116";
			};
			pinconf {
				pins = "gpio116";
				drive-strength = <2>;
				bias-disable;
			};
		};
	};

	/* secondary Mi2S */
	ext-sec-tlmm-lines {
		ext_sec_tlmm_lines_act: tlmm_lines_on {
			pinmux {
				function = "sec_mi2s";
				pins = "gpio112", "gpio117", "gpio118",
				       "gpio119";
			};
			pinconf {
				pins = "gpio112", "gpio117", "gpio118",
					"gpio119";
				drive-strength = <8>;
				bias-pull-none;
			};
		};
		ext_sec_tlmm_lines_sus: tlmm_lines_off {
			pinmux {
				function = "sec_mi2s";
				pins = "gpio112", "gpio117", "gpio118",
				       "gpio119";
			};
			pinconf {
				pins = "gpio112", "gpio117", "gpio118",
					"gpio119";
				drive-strength = <2>;
				bias-disable;
			};
		};
	};

	cdc-dmic-lines {
		cdc_dmic_lines_act: dmic_lines_on {
			pinmux_dmic0_clk {
				function = "dmic0_clk";
				pins = "gpio0";
			};
			pinmux_dmic0_data {
				function = "dmic0_data";
				pins = "gpio1";
			};
			pinconf {
				pins = "gpio0", "gpio1";
				drive-strength = <8>;
			};
		};
		cdc_dmic_lines_sus: dmic_lines_off {
			pinconf {
				pins = "gpio0", "gpio1";
				drive-strength = <2>;
				bias-disable;
			};
		};
	};

	cross-conn-det {
		cross_conn_det_act: lines_on {
			pinmux {
				function = "gpio";
				pins = "gpio120";
			};
			pinconf {
				pins = "gpio120";
				drive-strength = <8>;
				output-low;
				bias-pull-down;
			};
		};
		cross_conn_det_sus: lines_off {
			pinmux {
				function = "gpio";
				pins = "gpio120";
			};
			pinconf {
				pins = "gpio120";
				drive-strength = <2>;
				bias-disable;
			};
		};
	};
};
