/*
 *  Copyright (C) 2012-2013 Linaro Ltd.
 *  Author: Haojian Zhuang <haojian.zhuang@linaro.org>
 *
 *  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
 *  publishhed by the Free Software Foundation.
 */

/dts-v1/;

#include "hi3620.dtsi"

/ {
	model = "Hisilicon Hi4511 Development Board";
	compatible = "hisilicon,hi3620-hi4511";

	chosen {
		bootargs = "root=/dev/ram0";
		stdout-path = "serial0:115200n8";
	};

	memory {
		device_type = "memory";
		reg = <0x40000000 0x20000000>;
	};

	amba {
		dual_timer0: dual_timer@800000 {
			status = "ok";
		};

		uart0: uart@b00000 {	/* console */
			pinctrl-names = "default", "idle";
			pinctrl-0 = <&uart0_pmx_func &uart0_cfg_func>;
			pinctrl-1 = <&uart0_pmx_idle &uart0_cfg_idle>;
			status = "ok";
		};

		uart1: uart@b01000 { /* modem */
			pinctrl-names = "default", "idle";
			pinctrl-0 = <&uart1_pmx_func &uart1_cfg_func>;
			pinctrl-1 = <&uart1_pmx_idle &uart1_cfg_idle>;
			status = "ok";
		};

		uart2: uart@b02000 { /* audience */
			pinctrl-names = "default", "idle";
			pinctrl-0 = <&uart2_pmx_func &uart2_cfg_func>;
			pinctrl-1 = <&uart2_pmx_idle &uart2_cfg_idle>;
			status = "ok";
		};

		uart3: uart@b03000 {
			pinctrl-names = "default", "idle";
			pinctrl-0 = <&uart3_pmx_func &uart3_cfg_func>;
			pinctrl-1 = <&uart3_pmx_idle &uart3_cfg_idle>;
			status = "ok";
		};

		uart4: uart@b04000 {
			pinctrl-names = "default", "idle";
			pinctrl-0 = <&uart4_pmx_func &uart4_cfg_func>;
			pinctrl-1 = <&uart4_pmx_idle &uart4_cfg_func>;
			status = "ok";
		};

		pmx0: pinmux@803000 {
			pinctrl-names = "default";
			pinctrl-0 = <&board_pmx_pins>;

			board_pmx_pins: board_pmx_pins {
				pinctrl-single,pins = <
					0x008 0x0	/* GPIO -- eFUSE_DOUT */
					0x100 0x0	/* USIM_CLK & USIM_DATA (IOMG63) */
				>;
			};
			uart0_pmx_func: uart0_pmx_func {
				pinctrl-single,pins = <
					0x0f0 0x0
					0x0f4 0x0	/* UART0_RX & UART0_TX */
				>;
			};
			uart0_pmx_idle: uart0_pmx_idle {
				pinctrl-single,pins = <
					/*0x0f0 0x1*/	/* UART0_CTS & UART0_RTS */
					0x0f4 0x1	/* UART0_RX & UART0_TX */
				>;
			};
			uart1_pmx_func: uart1_pmx_func {
				pinctrl-single,pins = <
					0x0f8 0x0	/* UART1_CTS & UART1_RTS (IOMG61) */
					0x0fc 0x0	/* UART1_RX & UART1_TX (IOMG62) */
				>;
			};
			uart1_pmx_idle: uart1_pmx_idle {
				pinctrl-single,pins = <
					0x0f8 0x1	/* GPIO (IOMG61) */
					0x0fc 0x1	/* GPIO (IOMG62) */
				>;
			};
			uart2_pmx_func: uart2_pmx_func {
				pinctrl-single,pins = <
					0x104 0x2	/* UART2_RXD (IOMG96) */
					0x108 0x2	/* UART2_TXD (IOMG64) */
				>;
			};
			uart2_pmx_idle: uart2_pmx_idle {
				pinctrl-single,pins = <
					0x104 0x1	/* GPIO (IOMG96) */
					0x108 0x1	/* GPIO (IOMG64) */
				>;
			};
			uart3_pmx_func: uart3_pmx_func {
				pinctrl-single,pins = <
					0x160 0x2	/* UART3_CTS & UART3_RTS (IOMG85) */
					0x164 0x2	/* UART3_RXD & UART3_TXD (IOMG86) */
				>;
			};
			uart3_pmx_idle: uart3_pmx_idle {
				pinctrl-single,pins = <
					0x160 0x1	/* GPIO (IOMG85) */
					0x164 0x1	/* GPIO (IOMG86) */
				>;
			};
			uart4_pmx_func: uart4_pmx_func {
				pinctrl-single,pins = <
					0x168 0x0	/* UART4_CTS & UART4_RTS (IOMG87) */
					0x16c 0x0	/* UART4_RXD (IOMG88) */
					0x170 0x0	/* UART4_TXD (IOMG93) */
				>;
			};
			uart4_pmx_idle: uart4_pmx_idle {
				pinctrl-single,pins = <
					0x168 0x1	/* GPIO (IOMG87) */
					0x16c 0x1	/* GPIO (IOMG88) */
					0x170 0x1	/* GPIO (IOMG93) */
				>;
			};
			i2c0_pmx_func: i2c0_pmx_func {
				pinctrl-single,pins = <
					0x0b4 0x0	/* I2C0_SCL & I2C0_SDA (IOMG45) */
				>;
			};
			i2c0_pmx_idle: i2c0_pmx_idle {
				pinctrl-single,pins = <
					0x0b4 0x1	/* GPIO (IOMG45) */
				>;
			};
			i2c1_pmx_func: i2c1_pmx_func {
				pinctrl-single,pins = <
					0x0b8 0x0	/* I2C1_SCL & I2C1_SDA (IOMG46) */
				>;
			};
			i2c1_pmx_idle: i2c1_pmx_idle {
				pinctrl-single,pins = <
					0x0b8 0x1	/* GPIO (IOMG46) */
				>;
			};
			i2c2_pmx_func: i2c2_pmx_func {
				pinctrl-single,pins = <
					0x068 0x0	/* I2C2_SCL (IOMG26) */
					0x06c 0x0	/* I2C2_SDA (IOMG27) */
				>;
			};
			i2c2_pmx_idle: i2c2_pmx_idle {
				pinctrl-single,pins = <
					0x068 0x1	/* GPIO (IOMG26) */
					0x06c 0x1	/* GPIO (IOMG27) */
				>;
			};
			i2c3_pmx_func: i2c3_pmx_func {
				pinctrl-single,pins = <
					0x050 0x2	/* I2C3_SCL (IOMG20) */
					0x054 0x2	/* I2C3_SDA (IOMG21) */
				>;
			};
			i2c3_pmx_idle: i2c3_pmx_idle {
				pinctrl-single,pins = <
					0x050 0x1	/* GPIO (IOMG20) */
					0x054 0x1	/* GPIO (IOMG21) */
				>;
			};
			spi0_pmx_func: spi0_pmx_func {
				pinctrl-single,pins = <
					0x0d4 0x0	/* SPI0_CLK/SPI0_DI/SPI0_DO (IOMG53) */
					0x0d8 0x0	/* SPI0_CS0 (IOMG54) */
					0x0dc 0x0	/* SPI0_CS1 (IOMG55) */
					0x0e0 0x0	/* SPI0_CS2 (IOMG56) */
					0x0e4 0x0	/* SPI0_CS3 (IOMG57) */
				>;
			};
			spi0_pmx_idle: spi0_pmx_idle {
				pinctrl-single,pins = <
					0x0d4 0x1	/* GPIO (IOMG53) */
					0x0d8 0x1	/* GPIO (IOMG54) */
					0x0dc 0x1	/* GPIO (IOMG55) */
					0x0e0 0x1	/* GPIO (IOMG56) */
					0x0e4 0x1	/* GPIO (IOMG57) */
				>;
			};
			spi1_pmx_func: spi1_pmx_func {
				pinctrl-single,pins = <
					0x184 0x0	/* SPI1_CLK/SPI1_DI (IOMG98) */
					0x0e8 0x0	/* SPI1_DO (IOMG58) */
					0x0ec 0x0	/* SPI1_CS (IOMG95) */
				>;
			};
			spi1_pmx_idle: spi1_pmx_idle {
				pinctrl-single,pins = <
					0x184 0x1	/* GPIO (IOMG98) */
					0x0e8 0x1	/* GPIO (IOMG58) */
					0x0ec 0x1	/* GPIO (IOMG95) */
				>;
			};
			kpc_pmx_func: kpc_pmx_func {
				pinctrl-single,pins = <
					0x12c 0x0	/* KEY_IN0 (IOMG73) */
					0x130 0x0	/* KEY_IN1 (IOMG74) */
					0x134 0x0	/* KEY_IN2 (IOMG75) */
					0x10c 0x0	/* KEY_OUT0 (IOMG65) */
					0x110 0x0	/* KEY_OUT1 (IOMG66) */
					0x114 0x0	/* KEY_OUT2 (IOMG67) */
				>;
			};
			kpc_pmx_idle: kpc_pmx_idle {
				pinctrl-single,pins = <
					0x12c 0x1	/* GPIO (IOMG73) */
					0x130 0x1	/* GPIO (IOMG74) */
					0x134 0x1	/* GPIO (IOMG75) */
					0x10c 0x1	/* GPIO (IOMG65) */
					0x110 0x1	/* GPIO (IOMG66) */
					0x114 0x1	/* GPIO (IOMG67) */
				>;
			};
			gpio_key_func: gpio_key_func {
				pinctrl-single,pins = <
					0x10c 0x1	/* KEY_OUT0/GPIO (IOMG65) */
					0x130 0x1	/* KEY_IN1/GPIO (IOMG74) */
				>;
			};
			emmc_pmx_func: emmc_pmx_func {
				pinctrl-single,pins = <
					0x030 0x2	/* eMMC_CMD/eMMC_CLK (IOMG12) */
					0x018 0x0	/* NAND_CS3_N (IOMG6) */
					0x024 0x0	/* NAND_BUSY2_N (IOMG8) */
					0x028 0x0	/* NAND_BUSY3_N (IOMG9) */
					0x02c 0x2	/* eMMC_DATA[0:7] (IOMG10) */
				>;
			};
			emmc_pmx_idle: emmc_pmx_idle {
				pinctrl-single,pins = <
					0x030 0x0	/* GPIO (IOMG12) */
					0x018 0x1	/* GPIO (IOMG6) */
					0x024 0x1	/* GPIO (IOMG8) */
					0x028 0x1	/* GPIO (IOMG9) */
					0x02c 0x1	/* GPIO (IOMG10) */
				>;
			};
			sd_pmx_func: sd_pmx_func {
				pinctrl-single,pins = <
					0x0bc 0x0	/* SD_CLK/SD_CMD/SD_DATA0/SD_DATA1/SD_DATA2 (IOMG47) */
					0x0c0 0x0	/* SD_DATA3 (IOMG48) */
				>;
			};
			sd_pmx_idle: sd_pmx_idle {
				pinctrl-single,pins = <
					0x0bc 0x1	/* GPIO (IOMG47) */
					0x0c0 0x1	/* GPIO (IOMG48) */
				>;
			};
			nand_pmx_func: nand_pmx_func {
				pinctrl-single,pins = <
					0x00c 0x0	/* NAND_ALE/NAND_CLE/.../NAND_DATA[0:7] (IOMG3) */
					0x010 0x0	/* NAND_CS1_N (IOMG4) */
					0x014 0x0	/* NAND_CS2_N (IOMG5) */
					0x018 0x0	/* NAND_CS3_N (IOMG6) */
					0x01c 0x0	/* NAND_BUSY0_N (IOMG94) */
					0x020 0x0	/* NAND_BUSY1_N (IOMG7) */
					0x024 0x0	/* NAND_BUSY2_N (IOMG8) */
					0x028 0x0	/* NAND_BUSY3_N (IOMG9) */
					0x02c 0x0	/* NAND_DATA[8:15] (IOMG10) */
				>;
			};
			nand_pmx_idle: nand_pmx_idle {
				pinctrl-single,pins = <
					0x00c 0x1	/* GPIO (IOMG3) */
					0x010 0x1	/* GPIO (IOMG4) */
					0x014 0x1	/* GPIO (IOMG5) */
					0x018 0x1	/* GPIO (IOMG6) */
					0x01c 0x1	/* GPIO (IOMG94) */
					0x020 0x1	/* GPIO (IOMG7) */
					0x024 0x1	/* GPIO (IOMG8) */
					0x028 0x1	/* GPIO (IOMG9) */
					0x02c 0x1	/* GPIO (IOMG10) */
				>;
			};
			sdio_pmx_func: sdio_pmx_func {
				pinctrl-single,pins = <
					0x0c4 0x0	/* SDIO_CLK/SDIO_CMD/SDIO_DATA[0:3] (IOMG49) */
				>;
			};
			sdio_pmx_idle: sdio_pmx_idle {
				pinctrl-single,pins = <
					0x0c4 0x1	/* GPIO (IOMG49) */
				>;
			};
			audio_out_pmx_func: audio_out_pmx_func {
				pinctrl-single,pins = <
					0x0f0 0x1	/* GPIO (IOMG59), audio spk & earphone */
				>;
			};
		};

		pmx1: pinmux@803800 {
			pinctrl-names = "default";
			pinctrl-0 = <	&board_pu_pins &board_pd_pins &board_pd_ps_pins
					&board_np_pins &board_ps_pins &kpc_cfg_func
					&audio_out_cfg_func>;
			board_pu_pins: board_pu_pins {
				pinctrl-single,pins = <
					0x014 0		/* GPIO_158 (IOCFG2) */
					0x018 0		/* GPIO_159 (IOCFG3) */
					0x01c 0		/* BOOT_MODE0 (IOCFG4) */
					0x020 0		/* BOOT_MODE1 (IOCFG5) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <1 1 0 1>;
			};
			board_pd_pins: board_pd_pins {
				pinctrl-single,pins = <
					0x038 0		/* eFUSE_DOUT (IOCFG11) */
					0x150 0		/* ISP_GPIO8 (IOCFG93) */
					0x154 0		/* ISP_GPIO9 (IOCFG94) */
				>;
				pinctrl-single,bias-pulldown = <2 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
			};
			board_pd_ps_pins: board_pd_ps_pins {
				pinctrl-single,pins = <
					0x2d8 0		/* CLK_OUT0 (IOCFG190) */
					0x004 0		/* PMU_SPI_DATA (IOCFG192) */
				>;
				pinctrl-single,bias-pulldown = <2 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			board_np_pins: board_np_pins {
				pinctrl-single,pins = <
					0x24c 0		/* KEYPAD_OUT7 (IOCFG155) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
			};
			board_ps_pins: board_ps_pins {
				pinctrl-single,pins = <
					0x000 0		/* PMU_SPI_CLK (IOCFG191) */
					0x008 0		/* PMU_SPI_CS_N (IOCFG193) */
				>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			uart0_cfg_func: uart0_cfg_func {
				pinctrl-single,pins = <
					0x208 0		/* UART0_RXD (IOCFG138) */
					0x20c 0		/* UART0_TXD (IOCFG139) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
			};
			uart0_cfg_idle: uart0_cfg_idle {
				pinctrl-single,pins = <
					0x208 0		/* UART0_RXD (IOCFG138) */
					0x20c 0		/* UART0_TXD (IOCFG139) */
				>;
				pinctrl-single,bias-pulldown = <2 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
			};
			uart1_cfg_func: uart1_cfg_func {
				pinctrl-single,pins = <
					0x210 0		/* UART1_CTS (IOCFG140) */
					0x214 0		/* UART1_RTS (IOCFG141) */
					0x218 0		/* UART1_RXD (IOCFG142) */
					0x21c 0		/* UART1_TXD (IOCFG143) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
			};
			uart1_cfg_idle: uart1_cfg_idle {
				pinctrl-single,pins = <
					0x210 0		/* UART1_CTS (IOCFG140) */
					0x214 0		/* UART1_RTS (IOCFG141) */
					0x218 0		/* UART1_RXD (IOCFG142) */
					0x21c 0		/* UART1_TXD (IOCFG143) */
				>;
				pinctrl-single,bias-pulldown = <2 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
			};
			uart2_cfg_func: uart2_cfg_func {
				pinctrl-single,pins = <
					0x220 0		/* UART2_CTS (IOCFG144) */
					0x224 0		/* UART2_RTS (IOCFG145) */
					0x228 0		/* UART2_RXD (IOCFG146) */
					0x22c 0		/* UART2_TXD (IOCFG147) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
			};
			uart2_cfg_idle: uart2_cfg_idle {
				pinctrl-single,pins = <
					0x220 0		/* GPIO (IOCFG144) */
					0x224 0		/* GPIO (IOCFG145) */
					0x228 0		/* GPIO (IOCFG146) */
					0x22c 0		/* GPIO (IOCFG147) */
				>;
				pinctrl-single,bias-pulldown = <2 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
			};
			uart3_cfg_func: uart3_cfg_func {
				pinctrl-single,pins = <
					0x294 0		/* UART3_CTS (IOCFG173) */
					0x298 0		/* UART3_RTS (IOCFG174) */
					0x29c 0		/* UART3_RXD (IOCFG175) */
					0x2a0 0		/* UART3_TXD (IOCFG176) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
			};
			uart3_cfg_idle: uart3_cfg_idle {
				pinctrl-single,pins = <
					0x294 0		/* UART3_CTS (IOCFG173) */
					0x298 0		/* UART3_RTS (IOCFG174) */
					0x29c 0		/* UART3_RXD (IOCFG175) */
					0x2a0 0		/* UART3_TXD (IOCFG176) */
				>;
				pinctrl-single,bias-pulldown = <2 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
			};
			uart4_cfg_func: uart4_cfg_func {
				pinctrl-single,pins = <
					0x2a4 0		/* UART4_CTS (IOCFG177) */
					0x2a8 0		/* UART4_RTS (IOCFG178) */
					0x2ac 0		/* UART4_RXD (IOCFG179) */
					0x2b0 0		/* UART4_TXD (IOCFG180) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
			};
			i2c0_cfg_func: i2c0_cfg_func {
				pinctrl-single,pins = <
					0x17c 0		/* I2C0_SCL (IOCFG103) */
					0x180 0		/* I2C0_SDA (IOCFG104) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			i2c1_cfg_func: i2c1_cfg_func {
				pinctrl-single,pins = <
					0x184 0		/* I2C1_SCL (IOCFG105) */
					0x188 0		/* I2C1_SDA (IOCFG106) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			i2c2_cfg_func: i2c2_cfg_func {
				pinctrl-single,pins = <
					0x118 0		/* I2C2_SCL (IOCFG79) */
					0x11c 0		/* I2C2_SDA (IOCFG80) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			i2c3_cfg_func: i2c3_cfg_func {
				pinctrl-single,pins = <
					0x100 0		/* I2C3_SCL (IOCFG73) */
					0x104 0		/* I2C3_SDA (IOCFG74) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			spi0_cfg_func1: spi0_cfg_func1 {
				pinctrl-single,pins = <
					0x1d4 0		/* SPI0_CLK (IOCFG125) */
					0x1d8 0		/* SPI0_DI (IOCFG126) */
					0x1dc 0		/* SPI0_DO (IOCFG127) */
				>;
				pinctrl-single,bias-pulldown = <2 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			spi0_cfg_func2: spi0_cfg_func2 {
				pinctrl-single,pins = <
					0x1e0 0		/* SPI0_CS0 (IOCFG128) */
					0x1e4 0		/* SPI0_CS1 (IOCFG129) */
					0x1e8 0		/* SPI0_CS2 (IOCFG130 */
					0x1ec 0		/* SPI0_CS3 (IOCFG131) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <1 1 0 1>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			spi1_cfg_func1: spi1_cfg_func1 {
				pinctrl-single,pins = <
					0x1f0 0		/* SPI1_CLK (IOCFG132) */
					0x1f4 0		/* SPI1_DI (IOCFG133) */
					0x1f8 0		/* SPI1_DO (IOCFG134) */
				>;
				pinctrl-single,bias-pulldown = <2 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			spi1_cfg_func2: spi1_cfg_func2 {
				pinctrl-single,pins = <
					0x1fc 0		/* SPI1_CS (IOCFG135) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <1 1 0 1>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			kpc_cfg_func: kpc_cfg_func {
				pinctrl-single,pins = <
					0x250 0		/* KEY_IN0 (IOCFG156) */
					0x254 0		/* KEY_IN1 (IOCFG157) */
					0x258 0		/* KEY_IN2 (IOCFG158) */
					0x230 0		/* KEY_OUT0 (IOCFG148) */
					0x234 0		/* KEY_OUT1 (IOCFG149) */
					0x238 0		/* KEY_OUT2 (IOCFG150) */
				>;
				pinctrl-single,bias-pulldown = <2 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
			};
			emmc_cfg_func: emmc_cfg_func {
				pinctrl-single,pins = <
					0x0ac 0		/* eMMC_CMD (IOCFG40) */
					0x0b0 0		/* eMMC_CLK (IOCFG41) */
					0x058 0		/* NAND_CS3_N (IOCFG19) */
					0x064 0		/* NAND_BUSY2_N (IOCFG22) */
					0x068 0		/* NAND_BUSY3_N (IOCFG23) */
					0x08c 0		/* NAND_DATA8 (IOCFG32) */
					0x090 0		/* NAND_DATA9 (IOCFG33) */
					0x094 0		/* NAND_DATA10 (IOCFG34) */
					0x098 0		/* NAND_DATA11 (IOCFG35) */
					0x09c 0		/* NAND_DATA12 (IOCFG36) */
					0x0a0 0		/* NAND_DATA13 (IOCFG37) */
					0x0a4 0		/* NAND_DATA14 (IOCFG38) */
					0x0a8 0		/* NAND_DATA15 (IOCFG39) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <1 1 0 1>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			sd_cfg_func1: sd_cfg_func1 {
				pinctrl-single,pins = <
					0x18c 0		/* SD_CLK (IOCFG107) */
					0x190 0		/* SD_CMD (IOCFG108) */
				>;
				pinctrl-single,bias-pulldown = <2 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			sd_cfg_func2: sd_cfg_func2 {
				pinctrl-single,pins = <
					0x194 0		/* SD_DATA0 (IOCFG109) */
					0x198 0		/* SD_DATA1 (IOCFG110) */
					0x19c 0		/* SD_DATA2 (IOCFG111) */
					0x1a0 0		/* SD_DATA3 (IOCFG112) */
				>;
				pinctrl-single,bias-pulldown = <2 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
				pinctrl-single,drive-strength = <0x70 0xf0>;
			};
			nand_cfg_func1: nand_cfg_func1 {
				pinctrl-single,pins = <
					0x03c 0		/* NAND_ALE (IOCFG12) */
					0x040 0		/* NAND_CLE (IOCFG13) */
					0x06c 0		/* NAND_DATA0 (IOCFG24) */
					0x070 0		/* NAND_DATA1 (IOCFG25) */
					0x074 0		/* NAND_DATA2 (IOCFG26) */
					0x078 0		/* NAND_DATA3 (IOCFG27) */
					0x07c 0		/* NAND_DATA4 (IOCFG28) */
					0x080 0		/* NAND_DATA5 (IOCFG29) */
					0x084 0		/* NAND_DATA6 (IOCFG30) */
					0x088 0		/* NAND_DATA7 (IOCFG31) */
					0x08c 0		/* NAND_DATA8 (IOCFG32) */
					0x090 0		/* NAND_DATA9 (IOCFG33) */
					0x094 0		/* NAND_DATA10 (IOCFG34) */
					0x098 0		/* NAND_DATA11 (IOCFG35) */
					0x09c 0		/* NAND_DATA12 (IOCFG36) */
					0x0a0 0		/* NAND_DATA13 (IOCFG37) */
					0x0a4 0		/* NAND_DATA14 (IOCFG38) */
					0x0a8 0		/* NAND_DATA15 (IOCFG39) */
				>;
				pinctrl-single,bias-pulldown = <2 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			nand_cfg_func2: nand_cfg_func2 {
				pinctrl-single,pins = <
					0x044 0		/* NAND_RE_N (IOCFG14) */
					0x048 0		/* NAND_WE_N (IOCFG15) */
					0x04c 0		/* NAND_CS0_N (IOCFG16) */
					0x050 0		/* NAND_CS1_N (IOCFG17) */
					0x054 0		/* NAND_CS2_N (IOCFG18) */
					0x058 0		/* NAND_CS3_N (IOCFG19) */
					0x05c 0		/* NAND_BUSY0_N (IOCFG20) */
					0x060 0		/* NAND_BUSY1_N (IOCFG21) */
					0x064 0		/* NAND_BUSY2_N (IOCFG22) */
					0x068 0		/* NAND_BUSY3_N (IOCFG23) */
				>;
				pinctrl-single,bias-pulldown = <0 2 0 2>;
				pinctrl-single,bias-pullup = <1 1 0 1>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			sdio_cfg_func: sdio_cfg_func {
				pinctrl-single,pins = <
					0x1a4 0		/* SDIO0_CLK (IOCG113) */
					0x1a8 0		/* SDIO0_CMD (IOCG114) */
					0x1ac 0		/* SDIO0_DATA0 (IOCG115) */
					0x1b0 0		/* SDIO0_DATA1 (IOCG116) */
					0x1b4 0		/* SDIO0_DATA2 (IOCG117) */
					0x1b8 0		/* SDIO0_DATA3 (IOCG118) */
				>;
				pinctrl-single,bias-pulldown = <2 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
				pinctrl-single,drive-strength = <0x30 0xf0>;
			};
			audio_out_cfg_func: audio_out_cfg_func {
				pinctrl-single,pins = <
					0x200 0		/* GPIO (IOCFG136) */
					0x204 0		/* GPIO (IOCFG137) */
				>;
				pinctrl-single,bias-pulldown = <2 2 0 2>;
				pinctrl-single,bias-pullup = <0 1 0 1>;
			};
		};
	};

	gpio-keys {
		compatible = "gpio-keys";

		call {
			label = "call";
			gpios = <&gpio17 2 0>;
			linux,code = <169>;	/* KEY_PHONE */
		};
	};
};
