18c2ecf20Sopenharmony_ciLantiq XWAY pinmux controller
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciRequired properties:
48c2ecf20Sopenharmony_ci- compatible: "lantiq,pinctrl-xway", (DEPRECATED: Use "lantiq,pinctrl-danube")
58c2ecf20Sopenharmony_ci	      "lantiq,pinctrl-xr9", (DEPRECATED: Use "lantiq,xrx100-pinctrl" or
68c2ecf20Sopenharmony_ci					"lantiq,xrx200-pinctrl")
78c2ecf20Sopenharmony_ci	      "lantiq,pinctrl-ase", (DEPRECATED: Use "lantiq,ase-pinctrl")
88c2ecf20Sopenharmony_ci	      "lantiq,<chip>-pinctrl", where <chip> is:
98c2ecf20Sopenharmony_ci		"ase" (XWAY AMAZON Family)
108c2ecf20Sopenharmony_ci		"danube" (XWAY DANUBE Family)
118c2ecf20Sopenharmony_ci		"xrx100" (XWAY xRX100 Family)
128c2ecf20Sopenharmony_ci		"xrx200" (XWAY xRX200 Family)
138c2ecf20Sopenharmony_ci		"xrx300" (XWAY xRX300 Family)
148c2ecf20Sopenharmony_ci- reg: Should contain the physical address and length of the gpio/pinmux
158c2ecf20Sopenharmony_ci  register range
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciPlease refer to pinctrl-bindings.txt in this directory for details of the
188c2ecf20Sopenharmony_cicommon pinctrl bindings used by client devices, including the meaning of the
198c2ecf20Sopenharmony_ciphrase "pin configuration node".
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ciLantiq's pin configuration nodes act as a container for an arbitrary number of
228c2ecf20Sopenharmony_cisubnodes. Each of these subnodes represents some desired configuration for a
238c2ecf20Sopenharmony_cipin, a group, or a list of pins or groups. This configuration can include the
248c2ecf20Sopenharmony_cimux function to select on those group(s), and two pin configuration parameters:
258c2ecf20Sopenharmony_cipull-up and open-drain
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ciThe name of each subnode is not important as long as it is unique; all subnodes
288c2ecf20Sopenharmony_cishould be enumerated and processed purely based on their content.
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ciEach subnode only affects those parameters that are explicitly listed. In
318c2ecf20Sopenharmony_ciother words, a subnode that lists a mux function but no pin configuration
328c2ecf20Sopenharmony_ciparameters implies no information about any pin configuration parameters.
338c2ecf20Sopenharmony_ciSimilarly, a pin subnode that describes a pullup parameter implies no
348c2ecf20Sopenharmony_ciinformation about e.g. the mux function.
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ciWe support 2 types of nodes.
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ciDefinition of mux function groups:
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ciRequired subnode-properties:
418c2ecf20Sopenharmony_ci- lantiq,groups : An array of strings. Each string contains the name of a group.
428c2ecf20Sopenharmony_ci  Valid values for these names are listed below.
438c2ecf20Sopenharmony_ci- lantiq,function: A string containing the name of the function to mux to the
448c2ecf20Sopenharmony_ci  group. Valid values for function names are listed below.
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ciValid values for group and function names:
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ciXWAY: (DEPRECATED: Use DANUBE)
498c2ecf20Sopenharmony_ci  mux groups:
508c2ecf20Sopenharmony_ci    exin0, exin1, exin2, jtag, ebu a23, ebu a24, ebu a25, ebu clk, ebu cs1,
518c2ecf20Sopenharmony_ci    ebu wait, nand ale, nand cs1, nand cle, spi, spi_cs1, spi_cs2, spi_cs3,
528c2ecf20Sopenharmony_ci    spi_cs4, spi_cs5, spi_cs6, asc0, asc0 cts rts, stp, nmi, gpt1, gpt2,
538c2ecf20Sopenharmony_ci    gpt3, clkout0, clkout1, clkout2, clkout3, gnt1, gnt2, gnt3, req1, req2,
548c2ecf20Sopenharmony_ci    req3
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci  functions:
578c2ecf20Sopenharmony_ci    spi, asc, cgu, jtag, exin, stp, gpt, nmi, pci, ebu
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ciXR9: ( DEPRECATED: Use xRX100/xRX200)
608c2ecf20Sopenharmony_ci  mux groups:
618c2ecf20Sopenharmony_ci    exin0, exin1, exin2, exin3, exin4, jtag, ebu a23, ebu a24, ebu a25,
628c2ecf20Sopenharmony_ci    ebu clk, ebu cs1, ebu wait, nand ale, nand cs1, nand cle, nand rdy,
638c2ecf20Sopenharmony_ci    nand rd, spi, spi_cs1, spi_cs2, spi_cs3, spi_cs4, spi_cs5, spi_cs6,
648c2ecf20Sopenharmony_ci    asc0, asc0 cts rts, stp, nmi, gpt1, gpt2, gpt3, clkout0, clkout1,
658c2ecf20Sopenharmony_ci    clkout2, clkout3, gnt1, gnt2, gnt3, gnt4, req1, req2, req3, req4, mdio,
668c2ecf20Sopenharmony_ci    gphy0 led0, gphy0 led1, gphy0 led2, gphy1 led0, gphy1 led1, gphy1 led2
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci  functions:
698c2ecf20Sopenharmony_ci    spi, asc, cgu, jtag, exin, stp, gpt, nmi, pci, ebu, mdio, gphy
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ciAMAZON:
728c2ecf20Sopenharmony_ci  mux groups:
738c2ecf20Sopenharmony_ci    exin0, exin1, exin2, jtag, spi_di, spi_do, spi_clk, spi_cs1, spi_cs2,
748c2ecf20Sopenharmony_ci    spi_cs3, spi_cs4, spi_cs5, spi_cs6, asc, stp, gpt1, gpt2, gpt3, clkout0,
758c2ecf20Sopenharmony_ci    clkout1, clkout2, mdio, dfe led0, dfe led1, ephy led0, ephy led1, ephy led2
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ci  functions:
788c2ecf20Sopenharmony_ci    spi, asc, cgu, jtag, exin, stp, gpt, mdio, ephy, dfe
798c2ecf20Sopenharmony_ci
808c2ecf20Sopenharmony_ciDANUBE:
818c2ecf20Sopenharmony_ci  mux groups:
828c2ecf20Sopenharmony_ci    exin0, exin1, exin2, jtag, ebu a23, ebu a24, ebu a25, ebu clk, ebu cs1,
838c2ecf20Sopenharmony_ci    ebu wait, nand ale, nand cs1, nand cle, spi_di, spi_do, spi_clk, spi_cs1,
848c2ecf20Sopenharmony_ci    spi_cs2, spi_cs3, spi_cs4, spi_cs5, spi_cs6, asc0, asc0 cts rts, stp, nmi,
858c2ecf20Sopenharmony_ci    gpt1, gpt2, gpt3, clkout0, clkout1, clkout2, clkout3, gnt1, gnt2, gnt3,
868c2ecf20Sopenharmony_ci    req1, req2, req3, dfe led0, dfe led1
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ci  functions:
898c2ecf20Sopenharmony_ci    spi, asc, cgu, jtag, exin, stp, gpt, nmi, pci, ebu, dfe
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_cixRX100:
928c2ecf20Sopenharmony_ci  mux groups:
938c2ecf20Sopenharmony_ci    exin0, exin1, exin2, exin3, exin4, ebu a23, ebu a24, ebu a25, ebu clk,
948c2ecf20Sopenharmony_ci    ebu cs1, ebu wait, nand ale, nand cs1, nand cle, nand rdy, nand rd,
958c2ecf20Sopenharmony_ci    spi_di, spi_do, spi_clk, spi_cs1, spi_cs2, spi_cs3, spi_cs4, spi_cs5,
968c2ecf20Sopenharmony_ci    spi_cs6, asc0, asc0 cts rts, stp, nmi, gpt1, gpt2, gpt3, clkout0, clkout1,
978c2ecf20Sopenharmony_ci    clkout2, clkout3, gnt1, gnt2, gnt3, gnt4, req1, req2, req3, req4, mdio,
988c2ecf20Sopenharmony_ci    dfe led0, dfe led1
998c2ecf20Sopenharmony_ci
1008c2ecf20Sopenharmony_ci  functions:
1018c2ecf20Sopenharmony_ci    spi, asc, cgu, exin, stp, gpt, nmi, pci, ebu, mdio, dfe
1028c2ecf20Sopenharmony_ci
1038c2ecf20Sopenharmony_cixRX200:
1048c2ecf20Sopenharmony_ci  mux groups:
1058c2ecf20Sopenharmony_ci    exin0, exin1, exin2, exin3, exin4, ebu a23, ebu a24, ebu a25, ebu clk,
1068c2ecf20Sopenharmony_ci    ebu cs1, ebu wait, nand ale, nand cs1, nand cle, nand rdy, nand rd,
1078c2ecf20Sopenharmony_ci    spi_di, spi_do, spi_clk, spi_cs1, spi_cs2, spi_cs3, spi_cs4, spi_cs5,
1088c2ecf20Sopenharmony_ci    spi_cs6, usif uart_rx, usif uart_tx, usif uart_rts, usif uart_cts,
1098c2ecf20Sopenharmony_ci    usif uart_dtr, usif uart_dsr, usif uart_dcd, usif uart_ri, usif spi_di,
1108c2ecf20Sopenharmony_ci    usif spi_do, usif spi_clk, usif spi_cs0, usif spi_cs1, usif spi_cs2,
1118c2ecf20Sopenharmony_ci    stp, nmi, gpt1, gpt2, gpt3, clkout0, clkout1, clkout2, clkout3, gnt1,
1128c2ecf20Sopenharmony_ci    gnt2, gnt3, gnt4, req1, req2, req3, req4, mdio, dfe led0, dfe led1,
1138c2ecf20Sopenharmony_ci    gphy0 led0, gphy0 led1, gphy0 led2, gphy1 led0, gphy1 led1, gphy1 led2
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ci  functions:
1168c2ecf20Sopenharmony_ci    spi, usif, cgu, exin, stp, gpt, nmi, pci, ebu, mdio, dfe, gphy
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_cixRX300:
1198c2ecf20Sopenharmony_ci  mux groups:
1208c2ecf20Sopenharmony_ci    exin0, exin1, exin2, exin4, nand ale, nand cs0, nand cs1, nand cle,
1218c2ecf20Sopenharmony_ci    nand rdy, nand rd, nand_d0, nand_d1, nand_d2, nand_d3, nand_d4, nand_d5,
1228c2ecf20Sopenharmony_ci    nand_d6, nand_d7, nand_d1, nand wr, nand wp, nand se, spi_di, spi_do,
1238c2ecf20Sopenharmony_ci    spi_clk, spi_cs1, spi_cs4, spi_cs6, usif uart_rx, usif uart_tx,
1248c2ecf20Sopenharmony_ci    usif spi_di, usif spi_do, usif spi_clk, usif spi_cs0, stp, clkout2,
1258c2ecf20Sopenharmony_ci    mdio, dfe led0, dfe led1, ephy0 led0, ephy0 led1, ephy1 led0, ephy1 led1
1268c2ecf20Sopenharmony_ci
1278c2ecf20Sopenharmony_ci  functions:
1288c2ecf20Sopenharmony_ci    spi, usif, cgu, exin, stp, ebu, mdio, dfe, ephy
1298c2ecf20Sopenharmony_ci
1308c2ecf20Sopenharmony_ci
1318c2ecf20Sopenharmony_ciDefinition of pin configurations:
1328c2ecf20Sopenharmony_ci
1338c2ecf20Sopenharmony_ciRequired subnode-properties:
1348c2ecf20Sopenharmony_ci- lantiq,pins : An array of strings. Each string contains the name of a pin.
1358c2ecf20Sopenharmony_ci  Valid values for these names are listed below.
1368c2ecf20Sopenharmony_ci
1378c2ecf20Sopenharmony_ciOptional subnode-properties:
1388c2ecf20Sopenharmony_ci- lantiq,pull: Integer, representing the pull-down/up to apply to the pin.
1398c2ecf20Sopenharmony_ci    0: none, 1: down, 2: up.
1408c2ecf20Sopenharmony_ci- lantiq,open-drain: Boolean, enables open-drain on the defined pin.
1418c2ecf20Sopenharmony_ci
1428c2ecf20Sopenharmony_ciValid values for XWAY pin names: (DEPRECATED: Use DANUBE)
1438c2ecf20Sopenharmony_ci  Pinconf pins can be referenced via the names io0-io31.
1448c2ecf20Sopenharmony_ci
1458c2ecf20Sopenharmony_ciValid values for XR9 pin names: (DEPRECATED: Use xrX100/xRX200)
1468c2ecf20Sopenharmony_ci  Pinconf pins can be referenced via the names io0-io55.
1478c2ecf20Sopenharmony_ci
1488c2ecf20Sopenharmony_ciValid values for AMAZON pin names:
1498c2ecf20Sopenharmony_ci  Pinconf pins can be referenced via the names io0-io31.
1508c2ecf20Sopenharmony_ci
1518c2ecf20Sopenharmony_ciValid values for DANUBE pin names:
1528c2ecf20Sopenharmony_ci  Pinconf pins can be referenced via the names io0-io31.
1538c2ecf20Sopenharmony_ci
1548c2ecf20Sopenharmony_ciValid values for xRX100 pin names:
1558c2ecf20Sopenharmony_ci  Pinconf pins can be referenced via the names io0-io55.
1568c2ecf20Sopenharmony_ci
1578c2ecf20Sopenharmony_ciValid values for xRX200 pin names:
1588c2ecf20Sopenharmony_ci  Pinconf pins can be referenced via the names io0-io49.
1598c2ecf20Sopenharmony_ci
1608c2ecf20Sopenharmony_ciValid values for xRX300 pin names:
1618c2ecf20Sopenharmony_ci  Pinconf pins can be referenced via the names io0-io1,io3-io6,io8-io11,
1628c2ecf20Sopenharmony_ci						io13-io19,io23-io27,io34-io36,
1638c2ecf20Sopenharmony_ci						io42-io43,io48-io61.
1648c2ecf20Sopenharmony_ci
1658c2ecf20Sopenharmony_ciExample:
1668c2ecf20Sopenharmony_ci	gpio: pinmux@e100b10 {
1678c2ecf20Sopenharmony_ci		compatible = "lantiq,danube-pinctrl";
1688c2ecf20Sopenharmony_ci		pinctrl-names = "default";
1698c2ecf20Sopenharmony_ci		pinctrl-0 = <&state_default>;
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ci		#gpio-cells = <2>;
1728c2ecf20Sopenharmony_ci		gpio-controller;
1738c2ecf20Sopenharmony_ci		reg = <0xE100B10 0xA0>;
1748c2ecf20Sopenharmony_ci
1758c2ecf20Sopenharmony_ci		state_default: pinmux {
1768c2ecf20Sopenharmony_ci			stp {
1778c2ecf20Sopenharmony_ci				lantiq,groups = "stp";
1788c2ecf20Sopenharmony_ci				lantiq,function = "stp";
1798c2ecf20Sopenharmony_ci			};
1808c2ecf20Sopenharmony_ci			pci {
1818c2ecf20Sopenharmony_ci				lantiq,groups = "gnt1";
1828c2ecf20Sopenharmony_ci				lantiq,function = "pci";
1838c2ecf20Sopenharmony_ci			};
1848c2ecf20Sopenharmony_ci			conf_out {
1858c2ecf20Sopenharmony_ci				lantiq,pins = "io4", "io5", "io6"; /* stp */
1868c2ecf20Sopenharmony_ci				lantiq,open-drain;
1878c2ecf20Sopenharmony_ci				lantiq,pull = <0>;
1888c2ecf20Sopenharmony_ci			};
1898c2ecf20Sopenharmony_ci		};
1908c2ecf20Sopenharmony_ci	};
1918c2ecf20Sopenharmony_ci
192