/*
 * pinctrl dts fils for Hislicon HiKey960 development board
 *
 */

#include <dt-bindings/pinctrl/hisi.h>

/ {
	soc {
		/* [IOMG_000, IOMG_123] */
		range: gpio-range {
			#pinctrl-single,gpio-range-cells = <3>;
		};

		pmx0: pinmux@e896c000 {
			compatible = "pinctrl-single";
			reg = <0x0 0xe896c000 0x0 0x1f0>;
			#pinctrl-cells = <1>;
			#gpio-range-cells = <0x3>;
			pinctrl-single,register-width = <0x20>;
			pinctrl-single,function-mask = <0x7>;
			/* pin base, nr pins & gpio function */
			pinctrl-single,gpio-range = <
				&range 0 7 0
				&range 8 116 0>;

			isp0_pmx_func: isp0_pmx_func {
				pinctrl-single,pins = <
					0x058 MUX_M1 /* ISP_CLK0 */
					0x064 MUX_M1 /* ISP_SCL0 */
					0x068 MUX_M1 /* ISP_SDA0 */
				>;
			};

			isp1_pmx_func: isp1_pmx_func {
				pinctrl-single,pins = <
					0x05c MUX_M1 /* ISP_CLK1 */
					0x06c MUX_M1 /* ISP_SCL1 */
					0x070 MUX_M1 /* ISP_SDA1 */
				>;
			};

			i2c3_pmx_func: i2c3_pmx_func {
				pinctrl-single,pins = <
					0x02c MUX_M1 /* I2C3_SCL */
					0x030 MUX_M1 /* I2C3_SDA */
				>;
			};

			i2c4_pmx_func: i2c4_pmx_func {
				pinctrl-single,pins = <
					0x090 MUX_M1 /* I2C4_SCL */
					0x094 MUX_M1 /* I2C4_SDA */
				>;
			};

			pcie_perstn_pmx_func: pcie_perstn_pmx_func {
				pinctrl-single,pins = <
					0x15c MUX_M1 /* PCIE_PERST_N */
				>;
			};

			usbhub5734_pmx_func: usbhub5734_pmx_func {
				pinctrl-single,pins = <
					0x11c MUX_M0 /* GPIO_073 */
					0x120 MUX_M0 /* GPIO_074 */
				>;
			};

			spi1_pmx_func: spi1_pmx_func {
				pinctrl-single,pins = <
					0x034 MUX_M1 /* SPI1_CLK */
					0x038 MUX_M1 /* SPI1_DI */
					0x03c MUX_M1 /* SPI1_DO */
					0x040 MUX_M1 /* SPI1_CS_N */
				>;
			};

			uart0_pmx_func: uart0_pmx_func {
				pinctrl-single,pins = <
					0x0cc MUX_M2 /* UART0_RXD */
					0x0d0 MUX_M2 /* UART0_TXD */
					0x0d4 MUX_M2 /* UART0_RXD_M */
					0x0d8 MUX_M2 /* UART0_TXD_M */
				>;
			};

			uart1_pmx_func: uart1_pmx_func {
				pinctrl-single,pins = <
					0x0b0 MUX_M2 /* UART1_CTS_N */
					0x0b4 MUX_M2 /* UART1_RTS_N */
					0x0a8 MUX_M2 /* UART1_RXD */
					0x0ac MUX_M2 /* UART1_TXD */
				>;
			};

			uart2_pmx_func: uart2_pmx_func {
				pinctrl-single,pins = <
					0x0bc MUX_M2 /* UART2_CTS_N */
					0x0c0 MUX_M2 /* UART2_RTS_N */
					0x0c8 MUX_M2 /* UART2_RXD */
					0x0c4 MUX_M2 /* UART2_TXD */
				>;
			};

			uart3_pmx_func: uart3_pmx_func {
				pinctrl-single,pins = <
					0x0dc MUX_M1 /* UART3_CTS_N */
					0x0e0 MUX_M1 /* UART3_RTS_N */
					0x0e4 MUX_M1 /* UART3_RXD */
					0x0e8 MUX_M1 /* UART3_TXD */
				>;
			};

			uart4_pmx_func: uart4_pmx_func {
				pinctrl-single,pins = <
					0x0ec MUX_M1 /* UART4_CTS_N */
					0x0f0 MUX_M1 /* UART4_RTS_N */
					0x0f4 MUX_M1 /* UART4_RXD */
					0x0f8 MUX_M1 /* UART4_TXD */
				>;
			};

			uart5_pmx_func: uart5_pmx_func {
				pinctrl-single,pins = <
					0x0c4 MUX_M3 /* UART5_CTS_N */
					0x0c8 MUX_M3 /* UART5_RTS_N */
					0x0bc MUX_M3 /* UART5_RXD */
					0x0c0 MUX_M3 /* UART5_TXD */
				>;
			};

			uart6_pmx_func: uart6_pmx_func {
				pinctrl-single,pins = <
					0x0cc MUX_M1 /* UART6_CTS_N */
					0x0d0 MUX_M1 /* UART6_RTS_N */
					0x0d4 MUX_M1 /* UART6_RXD */
					0x0d8 MUX_M1 /* UART6_TXD */
				>;
			};
		};

		/* [IOMG_MMC0_000, IOMG_MMC0_005] */
		pmx1: pinmux@ff37e000 {
			compatible = "pinctrl-single";
			reg = <0x0 0xff37e000 0x0 0x18>;
			#gpio-range-cells = <0x3>;
			#pinctrl-cells = <1>;
			pinctrl-single,register-width = <0x20>;
			pinctrl-single,function-mask = <0x7>;
			/* pin base, nr pins & gpio function */
			pinctrl-single,gpio-range = <&range 0 6 0>;

			sd_pmx_func: sd_pmx_func {
				pinctrl-single,pins = <
					0x000 MUX_M1 /* SD_CLK */
					0x004 MUX_M1 /* SD_CMD */
					0x008 MUX_M1 /* SD_DATA0 */
					0x00c MUX_M1 /* SD_DATA1 */
					0x010 MUX_M1 /* SD_DATA2 */
					0x014 MUX_M1 /* SD_DATA3 */
				>;
			};
		};

		/* [IOMG_FIX_000, IOMG_FIX_011] */
		pmx2: pinmux@ff3b6000 {
			compatible = "pinctrl-single";
			reg = <0x0 0xff3b6000 0x0 0x30>;
			#pinctrl-cells = <1>;
			#gpio-range-cells = <0x3>;
			pinctrl-single,register-width = <0x20>;
			pinctrl-single,function-mask = <0x7>;
			/* pin base, nr pins & gpio function */
			pinctrl-single,gpio-range = <&range 0 12 0>;

			spi3_pmx_func: spi3_pmx_func {
				pinctrl-single,pins = <
					0x008 MUX_M1 /* SPI3_CLK */
					0x00c MUX_M1 /* SPI3_DI */
					0x010 MUX_M1 /* SPI3_DO */
					0x014 MUX_M1 /* SPI3_CS0_N */
				>;
			};
		};

		/* [IOMG_MMC1_000, IOMG_MMC1_005] */
		pmx3: pinmux@ff3fd000 {
			compatible = "pinctrl-single";
			reg = <0x0 0xff3fd000 0x0 0x18>;
			#pinctrl-cells = <1>;
			#gpio-range-cells = <0x3>;
			pinctrl-single,register-width = <0x20>;
			pinctrl-single,function-mask = <0x7>;
			/* pin base, nr pins & gpio function */
			pinctrl-single,gpio-range = <&range 0 6 0>;

			sdio_pmx_func: sdio_pmx_func {
				pinctrl-single,pins = <
					0x000 MUX_M1 /* SDIO_CLK */
					0x004 MUX_M1 /* SDIO_CMD */
					0x008 MUX_M1 /* SDIO_DATA0 */
					0x00c MUX_M1 /* SDIO_DATA1 */
					0x010 MUX_M1 /* SDIO_DATA2 */
					0x014 MUX_M1 /* SDIO_DATA3 */
				>;
			};
		};

		/* [IOMG_AO_000, IOMG_AO_041] */
		pmx4: pinmux@fff11000 {
			compatible = "pinctrl-single";
			reg = <0x0 0xfff11000 0x0 0xa8>;
			#pinctrl-cells = <1>;
			#gpio-range-cells = <0x3>;
			pinctrl-single,register-width = <0x20>;
			pinctrl-single,function-mask = <0x7>;
			/* pin base in node, nr pins & gpio function */
			pinctrl-single,gpio-range = <&range 0 42 0>;

			i2s2_pmx_func: i2s2_pmx_func {
				pinctrl-single,pins = <
					0x044 MUX_M1 /* I2S2_DI */
					0x048 MUX_M1 /* I2S2_DO */
					0x04c MUX_M1 /* I2S2_XCLK */
					0x050 MUX_M1 /* I2S2_XFS */
				>;
			};

			slimbus_pmx_func: slimbus_pmx_func {
				pinctrl-single,pins = <
					0x02c MUX_M1 /* SLIMBUS_CLK */
					0x030 MUX_M1 /* SLIMBUS_DATA */
				>;
			};

			i2c0_pmx_func: i2c0_pmx_func {
				pinctrl-single,pins = <
					0x014 MUX_M1 /* I2C0_SCL */
					0x018 MUX_M1 /* I2C0_SDA */
				>;
			};

			i2c1_pmx_func: i2c1_pmx_func {
				pinctrl-single,pins = <
					0x01c MUX_M1 /* I2C1_SCL */
					0x020 MUX_M1 /* I2C1_SDA */
				>;
			};

			i2c2_pmx_func: i2c2_pmx_func {
				pinctrl-single,pins = <
					0x024 MUX_M1 /* I2C2_SCL */
					0x028 MUX_M1 /* I2C2_SDA */
				>;
			};

			i2c7_pmx_func: i2c7_pmx_func {
				pinctrl-single,pins = <
					0x024 MUX_M3 /* I2C7_SCL */
					0x028 MUX_M3 /* I2C7_SDA */
				>;
			};

			spi2_pmx_func: spi2_pmx_func {
				pinctrl-single,pins = <
					0x08c MUX_M1 /* SPI2_CLK */
					0x090 MUX_M1 /* SPI2_DI */
					0x094 MUX_M1 /* SPI2_DO */
					0x098 MUX_M1 /* SPI2_CS0_N */
				>;
			};

			spi4_pmx_func: spi4_pmx_func {
				pinctrl-single,pins = <
					0x08c MUX_M4 /* SPI4_CLK */
					0x090 MUX_M4 /* SPI4_DI */
					0x094 MUX_M4 /* SPI4_DO */
					0x098 MUX_M4 /* SPI4_CS0_N */
				>;
			};

			i2s0_pmx_func: i2s0_pmx_func {
				pinctrl-single,pins = <
					0x034 MUX_M1 /* I2S0_DI */
					0x038 MUX_M1 /* I2S0_DO */
					0x03c MUX_M1 /* I2S0_XCLK */
					0x040 MUX_M1 /* I2S0_XFS */
				>;
			};
		};

		pmx5: pinmux@ff3fd800 {
			compatible = "pinconf-single";
			reg = <0x0 0xff3fd800 0x0 0x18>;
			#pinctrl-cells = <1>;
			#address-cells = <1>;
			#size-cells = <1>;
			pinctrl-single,register-width = <32>;

			sdio_clk_cfg_func: sdio_clk_cfg_func {
				pinctrl-single,pins = <
					0x000 0x0 /* SDIO_CLK */
				>;
				pinctrl-single,bias-pulldown = <
					PULL_DIS
					PULL_DOWN
					PULL_DIS
					PULL_DOWN
				>;
				pinctrl-single,bias-pullup = <
					PULL_DIS
					PULL_UP
					PULL_DIS
					PULL_UP
				>;
				pinctrl-single,drive-strength = <
					DRIVE6_32MA
					DRIVE6_MASK
				>;
			};

			sdio_cfg_func: sdio_cfg_func {
				pinctrl-single,pins = <
					0x004 0x0 /* SDIO_CMD */
					0x008 0x0 /* SDIO_DATA0 */
					0x00c 0x0 /* SDIO_DATA1 */
					0x010 0x0 /* SDIO_DATA2 */
					0x014 0x0 /* SDIO_DATA3 */
				>;
				pinctrl-single,bias-pulldown = <
					PULL_DIS
					PULL_DOWN
					PULL_DIS
					PULL_DOWN
				>;
				pinctrl-single,bias-pullup = <
					PULL_UP
					PULL_UP
					PULL_DIS
					PULL_UP
				>;
				pinctrl-single,drive-strength = <
					DRIVE6_19MA
					DRIVE6_MASK
				>;
			};
		};

		pmx6: pinmux@ff37e800 {
			compatible = "pinconf-single";
			reg = <0x0 0xff37e800 0x0 0x18>;
			#pinctrl-cells = <1>;
			#address-cells = <1>;
			#size-cells = <1>;
			pinctrl-single,register-width = <32>;

			sd_clk_cfg_func: sd_clk_cfg_func {
				pinctrl-single,pins = <
					0x000 0x0 /* SD_CLK */
				>;
				pinctrl-single,bias-pulldown = <
					PULL_DIS
					PULL_DOWN
					PULL_DIS
					PULL_DOWN
				>;
				pinctrl-single,bias-pullup = <
					PULL_DIS
					PULL_UP
					PULL_DIS
					PULL_UP
				>;
				pinctrl-single,drive-strength = <
					DRIVE6_32MA
					DRIVE6_MASK
				>;
			};

			sd_cfg_func: sd_cfg_func {
				pinctrl-single,pins = <
					0x004 0x0 /* SD_CMD */
					0x008 0x0 /* SD_DATA0 */
					0x00c 0x0 /* SD_DATA1 */
					0x010 0x0 /* SD_DATA2 */
					0x014 0x0 /* SD_DATA3 */
				>;
				pinctrl-single,bias-pulldown = <
					PULL_DIS
					PULL_DOWN
					PULL_DIS
					PULL_DOWN
				>;
				pinctrl-single,bias-pullup = <
					PULL_UP
					PULL_UP
					PULL_DIS
					PULL_UP
				>;
				pinctrl-single,drive-strength = <
					DRIVE6_19MA
					DRIVE6_MASK
				>;
			};
		};
	};
};
