======================
Aspeed Pin Controllers
======================

The Aspeed SoCs vary in functionality inside a generation but have a common mux
device register layout.

Required properties for g4:
- compatible : 			Should be one of the following:
				"aspeed,ast2400-pinctrl"
				"aspeed,g4-pinctrl"

Required properties for g5:
- compatible : 			Should be one of the following:
				"aspeed,ast2500-pinctrl"
				"aspeed,g5-pinctrl"

- aspeed,external-nodes:	A cell of phandles to external controller nodes:
				0: compatible with "aspeed,ast2500-gfx", "syscon"
				1: compatible with "aspeed,ast2500-lhc", "syscon"

The pin controller node should be the child of a syscon node with the required
property:

- compatible : 		Should be one of the following:
			"aspeed,ast2400-scu", "syscon", "simple-mfd"
			"aspeed,g4-scu", "syscon", "simple-mfd"
			"aspeed,ast2500-scu", "syscon", "simple-mfd"
			"aspeed,g5-scu", "syscon", "simple-mfd"

Refer to the the bindings described in
Documentation/devicetree/bindings/mfd/syscon.txt

Subnode Format
==============

The required properties of pinmux child nodes are:
- function: the mux function to select
- groups  : the list of groups to select with this function

Required properties of pinconf child nodes are:
- groups: A list of groups to select (either this or "pins" must be
          specified)
- pins  : A list of ball names as strings, eg "D14" (either this or "groups"
          must be specified)

Optional properties of pinconf child nodes are:
- bias-disable  : disable any pin bias
- bias-pull-down: pull down the pin
- drive-strength: sink or source at most X mA

Definitions are as specified in
Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt, with any
further limitations as described above.

For pinmux, each mux function has only one associated pin group. Each group is
named by its function. The following values for the function and groups
properties are supported:

aspeed,ast2400-pinctrl, aspeed,g4-pinctrl:

ACPI ADC0 ADC1 ADC10 ADC11 ADC12 ADC13 ADC14 ADC15 ADC2 ADC3 ADC4 ADC5 ADC6
ADC7 ADC8 ADC9 BMCINT DDCCLK DDCDAT EXTRST FLACK FLBUSY FLWP GPID GPID0 GPID2
GPID4 GPID6 GPIE0 GPIE2 GPIE4 GPIE6 I2C10 I2C11 I2C12 I2C13 I2C14 I2C3 I2C4
I2C5 I2C6 I2C7 I2C8 I2C9 LPCPD LPCPME LPCRST LPCSMI MAC1LINK MAC2LINK MDIO1
MDIO2 NCTS1 NCTS2 NCTS3 NCTS4 NDCD1 NDCD2 NDCD3 NDCD4 NDSR1 NDSR2 NDSR3 NDSR4
NDTR1 NDTR2 NDTR3 NDTR4 NDTS4 NRI1 NRI2 NRI3 NRI4 NRTS1 NRTS2 NRTS3 OSCCLK PWM0
PWM1 PWM2 PWM3 PWM4 PWM5 PWM6 PWM7 RGMII1 RGMII2 RMII1 RMII2 ROM16 ROM8 ROMCS1
ROMCS2 ROMCS3 ROMCS4 RXD1 RXD2 RXD3 RXD4 SALT1 SALT2 SALT3 SALT4 SD1 SD2 SGPMCK
SGPMI SGPMLD SGPMO SGPSCK SGPSI0 SGPSI1 SGPSLD SIOONCTRL SIOPBI SIOPBO SIOPWREQ
SIOPWRGD SIOS3 SIOS5 SIOSCI SPI1 SPI1DEBUG SPI1PASSTHRU SPICS1 TIMER3 TIMER4
TIMER5 TIMER6 TIMER7 TIMER8 TXD1 TXD2 TXD3 TXD4 UART6 USBCKI VGABIOS_ROM VGAHS
VGAVS VPI18 VPI24 VPI30 VPO12 VPO24 WDTRST1 WDTRST2

aspeed,ast2500-pinctrl, aspeed,g5-pinctrl:

ACPI ADC0 ADC1 ADC10 ADC11 ADC12 ADC13 ADC14 ADC15 ADC2 ADC3 ADC4 ADC5 ADC6
ADC7 ADC8 ADC9 BMCINT DDCCLK DDCDAT ESPI FWSPICS1 FWSPICS2 GPID0 GPID2 GPID4
GPID6 GPIE0 GPIE2 GPIE4 GPIE6 I2C10 I2C11 I2C12 I2C13 I2C14 I2C3 I2C4 I2C5 I2C6
I2C7 I2C8 I2C9 LAD0 LAD1 LAD2 LAD3 LCLK LFRAME LPCHC LPCPD LPCPLUS LPCPME
LPCRST LPCSMI LSIRQ MAC1LINK MAC2LINK MDIO1 MDIO2 NCTS1 NCTS2 NCTS3 NCTS4 NDCD1
NDCD2 NDCD3 NDCD4 NDSR1 NDSR2 NDSR3 NDSR4 NDTR1 NDTR2 NDTR3 NDTR4 NRI1 NRI2
NRI3 NRI4 NRTS1 NRTS2 NRTS3 NRTS4 OSCCLK PEWAKE PNOR PWM0 PWM1 PWM2 PWM3 PWM4
PWM5 PWM6 PWM7 RGMII1 RGMII2 RMII1 RMII2 RXD1 RXD2 RXD3 RXD4 SALT1 SALT10
SALT11 SALT12 SALT13 SALT14 SALT2 SALT3 SALT4 SALT5 SALT6 SALT7 SALT8 SALT9
SCL1 SCL2 SD1 SD2 SDA1 SDA2 SGPS1 SGPS2 SIOONCTRL SIOPBI SIOPBO SIOPWREQ
SIOPWRGD SIOS3 SIOS5 SIOSCI SPI1 SPI1CS1 SPI1DEBUG SPI1PASSTHRU SPI2CK SPI2CS0
SPI2CS1 SPI2MISO SPI2MOSI TIMER3 TIMER4 TIMER5 TIMER6 TIMER7 TIMER8 TXD1 TXD2
TXD3 TXD4 UART6 USBCKI VGABIOSROM VGAHS VGAVS VPI24 VPO WDTRST1 WDTRST2

Examples
========

g4 Example
----------

syscon: scu@1e6e2000 {
	compatible = "aspeed,ast2400-scu", "syscon", "simple-mfd";
	reg = <0x1e6e2000 0x1a8>;

	pinctrl: pinctrl {
		compatible = "aspeed,g4-pinctrl";

		pinctrl_i2c3_default: i2c3_default {
			function = "I2C3";
			groups = "I2C3";
		};

		pinctrl_gpioh0_unbiased_default: gpioh0 {
			pins = "A8";
			bias-disable;
		};
	};
};

g5 Example
----------

ahb {
	apb {
		syscon: scu@1e6e2000 {
			compatible = "aspeed,ast2500-scu", "syscon", "simple-mfd";
			reg = <0x1e6e2000 0x1a8>;

			pinctrl: pinctrl {
				compatible = "aspeed,g5-pinctrl";
				aspeed,external-nodes = <&gfx &lhc>;

				pinctrl_i2c3_default: i2c3_default {
					function = "I2C3";
					groups = "I2C3";
				};

				pinctrl_gpioh0_unbiased_default: gpioh0 {
					pins = "A18";
					bias-disable;
				};
			};
		};

		gfx: display@1e6e6000 {
			compatible = "aspeed,ast2500-gfx", "syscon";
			reg = <0x1e6e6000 0x1000>;
		};
	};

	lpc: lpc@1e789000 {
		compatible = "aspeed,ast2500-lpc", "simple-mfd";
		reg = <0x1e789000 0x1000>;

		#address-cells = <1>;
		#size-cells = <1>;
		ranges = <0x0 0x1e789000 0x1000>;

		lpc_host: lpc-host@80 {
			compatible = "aspeed,ast2500-lpc-host", "simple-mfd", "syscon";
			reg = <0x80 0x1e0>;
			reg-io-width = <4>;

			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0x0 0x80 0x1e0>;

			lhc: lhc@20 {
			       compatible = "aspeed,ast2500-lhc";
			       reg = <0x20 0x24 0x48 0x8>;
			};
		};
	};
};
