/*
 * Copyright 2013 Linaro Ltd.
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

#include "ste-nomadik-pinctrl.dtsi"

/ {
	soc {
		pinctrl {
			/* Settings for all UART default and sleep states */
			uart0 {
				uart0_default_mode: uart0_default {
					default_mux {
						function = "u0";
						groups = "u0_a_1";
					};
					default_cfg1 {
						pins = "GPIO0_AJ5", "GPIO2_AH4"; /* CTS+RXD */
						ste,config = <&in_pu>;
					};

					default_cfg2 {
						pins = "GPIO1_AJ3", "GPIO3_AH3"; /* RTS+TXD */
						ste,config = <&out_hi>;
					};
				};

				uart0_sleep_mode: uart0_sleep {
					sleep_cfg1 {
						pins = "GPIO0_AJ5", "GPIO2_AH4"; /* CTS+RXD */
						ste,config = <&slpm_in_wkup_pdis>;
					};

					sleep_cfg2 {
						pins = "GPIO1_AJ3"; /* RTS */
						ste,config = <&slpm_out_hi_wkup_pdis>;
					};

					sleep_cfg3 {
						pins = "GPIO3_AH3"; /* TXD */
						ste,config = <&slpm_out_wkup_pdis>;
					};
				};
			};

			uart1 {
				uart1_default_mode: uart1_default {
					default_mux {
						function = "u1";
						groups = "u1rxtx_a_1";
					};
					default_cfg1 {
						pins = "GPIO4_AH6"; /* RXD */
						ste,config = <&in_pu>;
					};

					default_cfg2 {
						pins = "GPIO5_AG6"; /* TXD */
						ste,config = <&out_hi>;
					};
				};

				uart1_sleep_mode: uart1_sleep {
					sleep_cfg1 {
						pins = "GPIO4_AH6"; /* RXD */
						ste,config = <&slpm_in_wkup_pdis>;
					};

					sleep_cfg2 {
						pins = "GPIO5_AG6"; /* TXD */
						ste,config = <&slpm_out_wkup_pdis>;
					};
				};
			};

			uart2 {
				uart2_default_mode: uart2_default {
					default_mux {
						function = "u2";
						groups = "u2rxtx_c_1";
					};
					default_cfg1 {
						pins = "GPIO29_W2"; /* RXD */
						ste,config = <&in_pu>;
					};

					default_cfg2 {
						pins = "GPIO30_W3"; /* TXD */
						ste,config = <&out_hi>;
					};
				};

				uart2_sleep_mode: uart2_sleep {
					sleep_cfg1 {
						pins = "GPIO29_W2"; /* RXD */
						ste,config = <&in_wkup_pdis>;
					};

					sleep_cfg2 {
						pins = "GPIO30_W3"; /* TXD */
						ste,config = <&out_wkup_pdis>;
					};
				};
			};

			/* Settings for all I2C default and sleep states */
			i2c0 {
				i2c0_default_mode: i2c_default {
					default_mux {
						function = "i2c0";
						groups = "i2c0_a_1";
					};
					default_cfg1 {
						pins = "GPIO147_C15", "GPIO148_B16"; /* SDA/SCL */
						ste,config = <&in_pu>;
					};
				};

				i2c0_sleep_mode: i2c_sleep {
					sleep_cfg1 {
						pins = "GPIO147_C15", "GPIO148_B16"; /* SDA/SCL */
						ste,config = <&slpm_in_wkup_pdis>;
					};
				};
			};

			i2c1 {
				i2c1_default_mode: i2c_default {
					default_mux {
						function = "i2c1";
						groups = "i2c1_b_2";
					};
					default_cfg1 {
						pins = "GPIO16_AD3", "GPIO17_AD4"; /* SDA/SCL */
						ste,config = <&in_pu>;
					};
				};

				i2c1_sleep_mode: i2c_sleep {
					sleep_cfg1 {
						pins = "GPIO16_AD3", "GPIO17_AD4"; /* SDA/SCL */
						ste,config = <&slpm_in_wkup_pdis>;
					};
				};
			};

			i2c2 {
				i2c2_default_mode: i2c_default {
					default_mux {
						function = "i2c2";
						groups = "i2c2_b_2";
					};
					default_cfg1 {
						pins = "GPIO10_AF5", "GPIO11_AG4"; /* SDA/SCL */
						ste,config = <&in_pu>;
					};
				};

				i2c2_sleep_mode: i2c_sleep {
					sleep_cfg1 {
						pins = "GPIO10_AF5", "GPIO11_AG4"; /* SDA/SCL */
						ste,config = <&slpm_in_wkup_pdis>;
					};
				};
			};

			i2c3 {
				i2c3_default_mode: i2c_default {
					default_mux {
						function = "i2c3";
						groups = "i2c3_c_2";
					};
					default_cfg1 {
						pins = "GPIO229_AG7", "GPIO230_AF7"; /* SDA/SCL */
						ste,config = <&in_pu>;
					};
				};

				i2c3_sleep_mode: i2c_sleep {
					sleep_cfg1 {
						pins = "GPIO229_AG7", "GPIO230_AF7"; /* SDA/SCL */
						ste,config = <&slpm_in_wkup_pdis>;
					};
				};
			};

			/*
			 * Activating I2C4 will conflict with UART1 about the same pins so do not
			 * enable I2C4 and UART1 at the same time.
			 */
			i2c4 {
				i2c4_default_mode: i2c_default {
					default_mux {
						function = "i2c4";
						groups = "i2c4_b_1";
					};
					default_cfg1 {
						pins = "GPIO4_AH6", "GPIO5_AG6"; /* SDA/SCL */
						ste,config = <&in_pu>;
					};
				};

				i2c4_sleep_mode: i2c_sleep {
					sleep_cfg1 {
						pins = "GPIO4_AH6", "GPIO5_AG6"; /* SDA/SCL */
						ste,config = <&slpm_in_wkup_pdis>;
					};
				};
			};

			/* Settings for all SPI default and sleep states */
			spi2 {
				spi2_default_mode: spi_default {
					default_mux {
						function = "spi2";
						groups = "spi2_oc1_2";
					};
					default_cfg1 {
						pins = "GPIO216_AG12"; /* FRM */
						ste,config = <&gpio_out_hi>;
					};
					default_cfg2 {
						pins = "GPIO218_AH11"; /* RXD */
						ste,config = <&in_pd>;
					};
					default_cfg3 {
						pins =
						"GPIO215_AH13", /* TXD */
						"GPIO217_AH12"; /* CLK */
						ste,config = <&out_lo>;
					};
				};

				spi2_idle_mode: spi_idle {
					/*
					 * The idle mode is basically sleep mode sans wakeups. Also
					 * note that we have muxes the pins off the function here
					 * as we do not state any muxing.
					 */
					idle_cfg1 {
						pins = "GPIO218_AH11"; /* RXD */
						ste,config = <&slpm_in_pdis>;
					};
					idle_cfg2 {
						pins = "GPIO215_AH13"; /* TXD */
						ste,config = <&slpm_out_lo_pdis>;
					};
					idle_cfg3 {
						pins = "GPIO217_AH12"; /* CLK */
						ste,config = <&slpm_pdis>;
					};
				};

				spi2_sleep_mode: spi_sleep {
					sleep_cfg1 {
						pins =
						"GPIO216_AG12", /* FRM */
						"GPIO218_AH11"; /* RXD */
						ste,config = <&slpm_in_wkup_pdis>;
					};
					sleep_cfg2 {
						pins = "GPIO215_AH13"; /* TXD */
						ste,config = <&slpm_out_lo_wkup_pdis>;
					};
					sleep_cfg3 {
						pins = "GPIO217_AH12"; /* CLK */
						ste,config = <&slpm_wkup_pdis>;
					};
				};
			};

			/* Settings for all MMC/SD/SDIO default and sleep states */
			sdi0 {
				/* This is the external SD card slot, 4 bits wide */
				sdi0_default_mode: sdi0_default {
					default_mux {
						function = "mc0";
						groups = "mc0_a_1";
					};
					default_cfg1 {
						pins =
						"GPIO18_AC2", /* CMDDIR */
						"GPIO19_AC1", /* DAT0DIR */
						"GPIO20_AB4"; /* DAT2DIR */
						ste,config = <&out_hi>;
					};
					default_cfg2 {
						pins = "GPIO22_AA3"; /* FBCLK */
						ste,config = <&in_nopull>;
					};
					default_cfg3 {
						pins = "GPIO23_AA4"; /* CLK */
						ste,config = <&out_lo>;
					};
					default_cfg4 {
						pins =
						"GPIO24_AB2", /* CMD */
						"GPIO25_Y4", /* DAT0 */
						"GPIO26_Y2", /* DAT1 */
						"GPIO27_AA2", /* DAT2 */
						"GPIO28_AA1"; /* DAT3 */
						ste,config = <&in_pu>;
					};
				};

				sdi0_sleep_mode: sdi0_sleep {
					sleep_cfg1 {
						pins =
						"GPIO18_AC2", /* CMDDIR */
						"GPIO19_AC1", /* DAT0DIR */
						"GPIO20_AB4"; /* DAT2DIR */
						ste,config = <&slpm_out_hi_wkup_pdis>;
					};
					sleep_cfg2 {
						pins =
						"GPIO22_AA3", /* FBCLK */
						"GPIO24_AB2", /* CMD */
						"GPIO25_Y4", /* DAT0 */
						"GPIO26_Y2", /* DAT1 */
						"GPIO27_AA2", /* DAT2 */
						"GPIO28_AA1"; /* DAT3 */
						ste,config = <&slpm_in_wkup_pdis>;
					};
					sleep_cfg3 {
						pins = "GPIO23_AA4"; /* CLK */
						ste,config = <&slpm_out_lo_wkup_pdis>;
					};
				};
			};

			sdi1 {
				/* This is the WLAN SDIO 4 bits wide */
				sdi1_default_mode: sdi1_default {
					default_mux {
						function = "mc1";
						groups = "mc1_a_1";
					};
					default_cfg1 {
						pins = "GPIO208_AH16"; /* CLK */
						ste,config = <&out_lo>;
					};
					default_cfg2 {
						pins = "GPIO209_AG15"; /* FBCLK */
						ste,config = <&in_nopull>;
					};
					default_cfg3 {
						pins =
						"GPIO210_AJ15", /* CMD */
						"GPIO211_AG14", /* DAT0 */
						"GPIO212_AF13", /* DAT1 */
						"GPIO213_AG13", /* DAT2 */
						"GPIO214_AH15"; /* DAT3 */
						ste,config = <&in_pu>;
					};
				};

				sdi1_sleep_mode: sdi1_sleep {
					sleep_cfg1 {
						pins = "GPIO208_AH16"; /* CLK */
						ste,config = <&slpm_out_lo_wkup_pdis>;
					};
					sleep_cfg2 {
						pins =
						"GPIO209_AG15", /* FBCLK */
						"GPIO210_AJ15", /* CMD */
						"GPIO211_AG14", /* DAT0 */
						"GPIO212_AF13", /* DAT1 */
						"GPIO213_AG13", /* DAT2 */
						"GPIO214_AH15"; /* DAT3 */
						ste,config = <&slpm_in_wkup_pdis>;
					};
				};
			};

			sdi2 {
				/* This is the eMMC 8 bits wide, usually PoP eMMC */
				sdi2_default_mode: sdi2_default {
					default_mux {
						function = "mc2";
						groups = "mc2_a_1";
					};
					default_cfg1 {
						pins = "GPIO128_A5"; /* CLK */
						ste,config = <&out_lo>;
					};
					default_cfg2 {
						pins = "GPIO130_C8"; /* FBCLK */
						ste,config = <&in_nopull>;
					};
					default_cfg3 {
						pins =
						"GPIO129_B4", /* CMD */
						"GPIO131_A12", /* DAT0 */
						"GPIO132_C10", /* DAT1 */
						"GPIO133_B10", /* DAT2 */
						"GPIO134_B9", /* DAT3 */
						"GPIO135_A9", /* DAT4 */
						"GPIO136_C7", /* DAT5 */
						"GPIO137_A7", /* DAT6 */
						"GPIO138_C5"; /* DAT7 */
						ste,config = <&in_pu>;
					};
				};

				sdi2_sleep_mode: sdi2_sleep {
					sleep_cfg1 {
						pins = "GPIO128_A5"; /* CLK */
						ste,config = <&out_lo_wkup_pdis>;
					};
					sleep_cfg2 {
						pins =
						"GPIO130_C8", /* FBCLK */
						"GPIO129_B4"; /* CMD */
						ste,config = <&in_wkup_pdis_en>;
					};
					sleep_cfg3 {
						pins =
						"GPIO131_A12", /* DAT0 */
						"GPIO132_C10", /* DAT1 */
						"GPIO133_B10", /* DAT2 */
						"GPIO134_B9", /* DAT3 */
						"GPIO135_A9", /* DAT4 */
						"GPIO136_C7", /* DAT5 */
						"GPIO137_A7", /* DAT6 */
						"GPIO138_C5"; /* DAT7 */
						ste,config = <&in_wkup_pdis>;
					};
				};
			};

			sdi4 {
				/* This is the eMMC 8 bits wide, usually PCB-mounted eMMC */
				sdi4_default_mode: sdi4_default {
					default_mux {
						function = "mc4";
						groups = "mc4_a_1";
					};
					default_cfg1 {
						pins = "GPIO203_AE23"; /* CLK */
						ste,config = <&out_lo>;
					};
					default_cfg2 {
						pins = "GPIO202_AF25"; /* FBCLK */
						ste,config = <&in_nopull>;
					};
					default_cfg3 {
						pins =
						"GPIO201_AF24", /* CMD */
						"GPIO200_AH26", /* DAT0 */
						"GPIO199_AH23", /* DAT1 */
						"GPIO198_AG25", /* DAT2 */
						"GPIO197_AH24", /* DAT3 */
						"GPIO207_AJ23", /* DAT4 */
						"GPIO206_AG24", /* DAT5 */
						"GPIO205_AG23", /* DAT6 */
						"GPIO204_AF23"; /* DAT7 */
						ste,config = <&in_pu>;
					};
				};

				sdi4_sleep_mode: sdi4_sleep {
					sleep_cfg1 {
						pins = "GPIO203_AE23"; /* CLK */
						ste,config = <&out_lo_wkup_pdis>;
					};
					sleep_cfg2 {
						pins =
						"GPIO202_AF25", /* FBCLK */
						"GPIO201_AF24", /* CMD */
						"GPIO200_AH26", /* DAT0 */
						"GPIO199_AH23", /* DAT1 */
						"GPIO198_AG25", /* DAT2 */
						"GPIO197_AH24", /* DAT3 */
						"GPIO207_AJ23", /* DAT4 */
						"GPIO206_AG24", /* DAT5 */
						"GPIO205_AG23", /* DAT6 */
						"GPIO204_AF23"; /* DAT7 */
						ste,config = <&slpm_in_wkup_pdis>;
					};
				};
			};

			/*
			 * Multi-rate serial ports (MSPs) - MSP3 output is internal and
			 * cannot be muxed onto any pins.
			 */
			msp0 {
				msp0_default_mode: msp0_default {
					default_msp0_mux {
						function = "msp0";
						groups = "msp0txrx_a_1", "msp0tfstck_a_1";
					};
					default_msp0_cfg {
						pins =
						"GPIO12_AC4", /* TXD */
						"GPIO15_AC3", /* RXD */
						"GPIO13_AF3", /* TFS */
						"GPIO14_AE3"; /* TCK */
						ste,config = <&in_nopull>;
					};
				};
			};

			msp1 {
				msp1_default_mode: msp1_default {
					default_mux {
						function = "msp1";
						groups = "msp1txrx_a_1", "msp1_a_1";
					};
					default_cfg1 {
						pins = "GPIO33_AF2";
						ste,config = <&out_lo>;
					};
					default_cfg2 {
						pins =
						"GPIO34_AE1",
						"GPIO35_AE2",
						"GPIO36_AG2";
						ste,config = <&in_nopull>;
					};

				};
			};

			msp2 {
				msp2_default_mode: msp2_default {
					/* MSP2 usually used for HDMI audio */
					default_mux {
						function = "msp2";
						groups = "msp2_a_1";
					};
					default_cfg1 {
						pins =
						"GPIO193_AH27", /* TXD */
						"GPIO194_AF27", /* TCK */
						"GPIO195_AG28"; /* TFS */
						ste,config = <&in_pd>;
					};
					default_cfg2 {
						pins = "GPIO196_AG26"; /* RXD */
						ste,config = <&out_lo>;
					};
				};
			};


			musb {
				musb_default_mode: musb_default {
					default_mux {
						function = "usb";
						groups = "usb_a_1";
					};
					default_cfg1 {
						pins =
						"GPIO256_AF28", /* NXT */
						"GPIO258_AD29", /* XCLK */
						"GPIO259_AC29", /* DIR */
						"GPIO260_AD28", /* DAT7 */
						"GPIO261_AD26", /* DAT6 */
						"GPIO262_AE26", /* DAT5 */
						"GPIO263_AG29", /* DAT4 */
						"GPIO264_AE27", /* DAT3 */
						"GPIO265_AD27", /* DAT2 */
						"GPIO266_AC28", /* DAT1 */
						"GPIO267_AC27"; /* DAT0 */
						ste,config = <&in_nopull>;
					};
					default_cfg2 {
						pins = "GPIO257_AE29"; /* STP */
						ste,config = <&out_hi>;
					};
				};

				musb_sleep_mode: musb_sleep {
					sleep_cfg1 {
						pins =
						"GPIO256_AF28", /* NXT */
						"GPIO258_AD29", /* XCLK */
						"GPIO259_AC29"; /* DIR */
						ste,config = <&slpm_wkup_pdis_en>;
					};
					sleep_cfg2 {
						pins = "GPIO257_AE29"; /* STP */
						ste,config = <&slpm_out_hi_wkup_pdis>;
					};
					sleep_cfg3 {
						pins =
						"GPIO260_AD28", /* DAT7 */
						"GPIO261_AD26", /* DAT6 */
						"GPIO262_AE26", /* DAT5 */
						"GPIO263_AG29", /* DAT4 */
						"GPIO264_AE27", /* DAT3 */
						"GPIO265_AD27", /* DAT2 */
						"GPIO266_AC28", /* DAT1 */
						"GPIO267_AC27"; /* DAT0 */
						ste,config = <&slpm_in_wkup_pdis_en>;
					};
				};
			};

			mcde {
				lcd_default_mode: lcd_default {
					default_mux {
						/* Mux in VSI0 and all the data lines */
						function = "lcd";
						groups =
						"lcdvsi0_a_1", /* VSI0 for LCD */
						"lcd_d0_d7_a_1", /* Data lines */
						"lcd_d8_d11_a_1", /* TV-out */
						"lcdaclk_b_1", /* Clock line for TV-out */
						"lcdvsi1_a_1"; /* VSI1 for HDMI */
					};
					default_cfg1 {
						pins =
						"GPIO68_E1", /* VSI0 */
						"GPIO69_E2"; /* VSI1 */
						ste,config = <&in_pu>;
					};
				};
				lcd_sleep_mode: lcd_sleep {
					sleep_cfg1 {
						pins = "GPIO69_E2"; /* VSI1 */
						ste,config = <&slpm_in_wkup_pdis>;
					};
				};
			};

			ske {
				/* SKE keys on position 2 in an 8x8 matrix */
				ske_kpa2_default_mode: ske_kpa2_default {
					default_mux {
						function = "kp";
						groups = "kp_a_2";
					};
					default_cfg1 {
						pins =
						"GPIO153_B17", /* I7 */
						"GPIO154_C16", /* I6 */
						"GPIO155_C19", /* I5 */
						"GPIO156_C17", /* I4 */
						"GPIO161_D21", /* I3 */
						"GPIO162_D20", /* I2 */
						"GPIO163_C20", /* I1 */
						"GPIO164_B21"; /* I0 */
						ste,config = <&in_pd>;
					};
					default_cfg2 {
						pins =
						"GPIO157_A18", /* O7 */
						"GPIO158_C18", /* O6 */
						"GPIO159_B19", /* O5 */
						"GPIO160_B20", /* O4 */
						"GPIO165_C21", /* O3 */
						"GPIO166_A22", /* O2 */
						"GPIO167_B24", /* O1 */
						"GPIO168_C22"; /* O0 */
						ste,config = <&out_lo>;
					};
				};
				ske_kpa2_sleep_mode: ske_kpa2_sleep {
					sleep_cfg1 {
						pins =
						"GPIO153_B17", /* I7 */
						"GPIO154_C16", /* I6 */
						"GPIO155_C19", /* I5 */
						"GPIO156_C17", /* I4 */
						"GPIO161_D21", /* I3 */
						"GPIO162_D20", /* I2 */
						"GPIO163_C20", /* I1 */
						"GPIO164_B21"; /* I0 */
						ste,config = <&slpm_in_pu_wkup_pdis_en>;
					};
					sleep_cfg2 {
						pins =
						"GPIO157_A18", /* O7 */
						"GPIO158_C18", /* O6 */
						"GPIO159_B19", /* O5 */
						"GPIO160_B20", /* O4 */
						"GPIO165_C21", /* O3 */
						"GPIO166_A22", /* O2 */
						"GPIO167_B24", /* O1 */
						"GPIO168_C22"; /* O0 */
						ste,config = <&slpm_out_lo_pdis>;
					};
				};
				/*
				 * SKE keys on position 1 and "other C1" combi giving
				 * six rows of six keys.
				 */
				ske_kpaoc1_default_mode: ske_kpaoc1_default {
					default_mux {
						function = "kp";
						groups = "kp_a_1", "kp_oc1_1";
					};
					default_cfg1 {
						pins =
						"GPIO91_B6", /* KP_O0 */
						"GPIO90_A3", /* KP_O1 */
						"GPIO87_B3", /* KP_O2 */
						"GPIO86_C6", /* KP_O3 */
						"GPIO96_D8", /* KP_O6 */
						"GPIO94_D7"; /* KP_O7 */
						ste,config = <&out_lo>;
					};
					default_cfg2 {
						pins =
						"GPIO93_B7", /* KP_I0 */
						"GPIO92_D6", /* KP_I1 */
						"GPIO89_E6", /* KP_I2 */
						"GPIO88_C4", /* KP_I3 */
						"GPIO97_D9", /* KP_I6 */
						"GPIO95_E8"; /* KP_I7 */
						ste,config = <&in_pu>;
					};
				};
			};

			wlan {
				wlan_default_mode: wlan_default {
					/*
					 * Activate this mode with the WLAN chip.
					 * These are plain GPIO pins used by WLAN
					 */
					default_cfg1 {
						pins =
						"GPIO226_AF8", /* WLAN_PMU_EN */
						"GPIO85_D5"; /* WLAN_ENA */
						ste,config = <&gpio_out_lo>;
					};
					default_cfg2 {
						pins = "GPIO4_AH6"; /* WLAN_IRQ on UART1 */
						ste,config = <&gpio_in_pu>;
					};
				};
			};
		};
	};
};
