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

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

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

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

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

	i2c6_sleep: i2c6_sleep {
		pinmux {
			function = "gpio";
			pins = "gpio22", "gpio23";
		};
		pinconf {
			pins = "gpio22", "gpio23";
			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>;
			};
		};
	};

	pmx_sdc2_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;
			};
		};
	};

	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 {
			pinmux_dmic0_clk {
				function = "dmic0_clk";
				pins = "gpio0";
			};
			pinmux_dmic0_data {
				function = "dmic0_data";
				pins = "gpio1";
			};
			pinconf {
				pins = "gpio0", "gpio1";
				drive-strength = <2>;
				bias-disable;
			};
		};
	};

	wcnss_pin_a: wcnss-active {
		pinmux {
			pins = "gpio40", "gpio41", "gpio42", "gpio43", "gpio44";
			function = "wcss_wlan";
		};

		pinconf {
			pins = "gpio40", "gpio41", "gpio42", "gpio43", "gpio44";
			drive-strength = <6>;
			bias-pull-up;
		};
	};
};
