Lines Matching +full:spi +full:- +full:gpio
2 * linux/drivers/pinctrl/pinmux-xway.c
3 * based on linux/drivers/pinctrl/pinmux-pxa910.c
24 #include "pinctrl-lantiq.h"
113 /* --------- DEPRECATED: xr9 related code --------- */
114 /* ---------- use xrx100/xrx200 instead ---------- */
119 MFP_XWAY(GPIO0, GPIO, EXIN, NONE, TDM),
120 MFP_XWAY(GPIO1, GPIO, EXIN, NONE, NONE),
121 MFP_XWAY(GPIO2, GPIO, CGU, EXIN, GPHY),
122 MFP_XWAY(GPIO3, GPIO, CGU, NONE, PCI),
123 MFP_XWAY(GPIO4, GPIO, STP, NONE, ASC),
124 MFP_XWAY(GPIO5, GPIO, STP, GPHY, NONE),
125 MFP_XWAY(GPIO6, GPIO, STP, GPT, ASC),
126 MFP_XWAY(GPIO7, GPIO, CGU, PCI, GPHY),
127 MFP_XWAY(GPIO8, GPIO, CGU, NMI, NONE),
128 MFP_XWAY(GPIO9, GPIO, ASC, SPI, EXIN),
129 MFP_XWAY(GPIO10, GPIO, ASC, SPI, NONE),
130 MFP_XWAY(GPIO11, GPIO, ASC, PCI, SPI),
131 MFP_XWAY(GPIO12, GPIO, ASC, NONE, NONE),
132 MFP_XWAY(GPIO13, GPIO, EBU, SPI, NONE),
133 MFP_XWAY(GPIO14, GPIO, CGU, PCI, NONE),
134 MFP_XWAY(GPIO15, GPIO, SPI, JTAG, NONE),
135 MFP_XWAY(GPIO16, GPIO, SPI, NONE, JTAG),
136 MFP_XWAY(GPIO17, GPIO, SPI, NONE, JTAG),
137 MFP_XWAY(GPIO18, GPIO, SPI, NONE, JTAG),
138 MFP_XWAY(GPIO19, GPIO, PCI, NONE, NONE),
139 MFP_XWAY(GPIO20, GPIO, JTAG, NONE, NONE),
140 MFP_XWAY(GPIO21, GPIO, PCI, EBU, GPT),
141 MFP_XWAY(GPIO22, GPIO, SPI, NONE, NONE),
142 MFP_XWAY(GPIO23, GPIO, EBU, PCI, STP),
143 MFP_XWAY(GPIO24, GPIO, EBU, TDM, PCI),
144 MFP_XWAY(GPIO25, GPIO, TDM, NONE, ASC),
145 MFP_XWAY(GPIO26, GPIO, EBU, NONE, TDM),
146 MFP_XWAY(GPIO27, GPIO, TDM, NONE, ASC),
147 MFP_XWAY(GPIO28, GPIO, GPT, NONE, NONE),
148 MFP_XWAY(GPIO29, GPIO, PCI, NONE, NONE),
149 MFP_XWAY(GPIO30, GPIO, PCI, NONE, NONE),
150 MFP_XWAY(GPIO31, GPIO, EBU, PCI, NONE),
151 MFP_XWAY(GPIO32, GPIO, NONE, NONE, EBU),
152 MFP_XWAY(GPIO33, GPIO, NONE, NONE, EBU),
153 MFP_XWAY(GPIO34, GPIO, NONE, NONE, EBU),
154 MFP_XWAY(GPIO35, GPIO, NONE, NONE, EBU),
155 MFP_XWAY(GPIO36, GPIO, SIN, NONE, EBU),
156 MFP_XWAY(GPIO37, GPIO, PCI, NONE, NONE),
157 MFP_XWAY(GPIO38, GPIO, PCI, NONE, NONE),
158 MFP_XWAY(GPIO39, GPIO, EXIN, NONE, NONE),
159 MFP_XWAY(GPIO40, GPIO, NONE, NONE, NONE),
160 MFP_XWAY(GPIO41, GPIO, NONE, NONE, NONE),
161 MFP_XWAY(GPIO42, GPIO, MDIO, NONE, NONE),
162 MFP_XWAY(GPIO43, GPIO, MDIO, NONE, NONE),
163 MFP_XWAY(GPIO44, GPIO, MII, SIN, GPHY),
164 MFP_XWAY(GPIO45, GPIO, NONE, GPHY, SIN),
165 MFP_XWAY(GPIO46, GPIO, NONE, NONE, EXIN),
166 MFP_XWAY(GPIO47, GPIO, MII, GPHY, SIN),
167 MFP_XWAY(GPIO48, GPIO, EBU, NONE, NONE),
168 MFP_XWAY(GPIO49, GPIO, EBU, NONE, NONE),
169 MFP_XWAY(GPIO50, GPIO, NONE, NONE, NONE),
170 MFP_XWAY(GPIO51, GPIO, NONE, NONE, NONE),
171 MFP_XWAY(GPIO52, GPIO, NONE, NONE, NONE),
172 MFP_XWAY(GPIO53, GPIO, NONE, NONE, NONE),
173 MFP_XWAY(GPIO54, GPIO, NONE, NONE, NONE),
174 MFP_XWAY(GPIO55, GPIO, NONE, NONE, NONE),
255 GRP_MUX("spi", SPI, pins_spi),
256 GRP_MUX("spi_cs1", SPI, pins_spi_cs1),
257 GRP_MUX("spi_cs2", SPI, pins_spi_cs2),
258 GRP_MUX("spi_cs3", SPI, pins_spi_cs3),
259 GRP_MUX("spi_cs4", SPI, pins_spi_cs4),
260 GRP_MUX("spi_cs5", SPI, pins_spi_cs5),
261 GRP_MUX("spi_cs6", SPI, pins_spi_cs6),
299 static const char * const xway_spi_grps[] = {"spi", "spi_cs1",
336 {"spi", ARRAY_AND_SIZE(xway_spi_grps)},
350 /* --------- ase related code --------- */
355 MFP_XWAY(GPIO0, GPIO, EXIN, MII, TDM),
356 MFP_XWAY(GPIO1, GPIO, STP, DFE, EBU),
357 MFP_XWAY(GPIO2, GPIO, STP, DFE, EPHY),
358 MFP_XWAY(GPIO3, GPIO, STP, EPHY, EBU),
359 MFP_XWAY(GPIO4, GPIO, GPT, EPHY, MII),
360 MFP_XWAY(GPIO5, GPIO, MII, ASC, GPT),
361 MFP_XWAY(GPIO6, GPIO, MII, ASC, EXIN),
362 MFP_XWAY(GPIO7, GPIO, SPI, MII, JTAG),
363 MFP_XWAY(GPIO8, GPIO, SPI, MII, JTAG),
364 MFP_XWAY(GPIO9, GPIO, SPI, MII, JTAG),
365 MFP_XWAY(GPIO10, GPIO, SPI, MII, JTAG),
366 MFP_XWAY(GPIO11, GPIO, EBU, CGU, JTAG),
367 MFP_XWAY(GPIO12, GPIO, EBU, MII, SDIO),
368 MFP_XWAY(GPIO13, GPIO, EBU, MII, CGU),
369 MFP_XWAY(GPIO14, GPIO, EBU, SPI, CGU),
370 MFP_XWAY(GPIO15, GPIO, EBU, SPI, SDIO),
371 MFP_XWAY(GPIO16, GPIO, NONE, NONE, NONE),
372 MFP_XWAY(GPIO17, GPIO, NONE, NONE, NONE),
373 MFP_XWAY(GPIO18, GPIO, NONE, NONE, NONE),
374 MFP_XWAY(GPIO19, GPIO, EBU, MII, SDIO),
375 MFP_XWAY(GPIO20, GPIO, EBU, MII, SDIO),
376 MFP_XWAY(GPIO21, GPIO, EBU, MII, EBU2),
377 MFP_XWAY(GPIO22, GPIO, EBU, MII, CGU),
378 MFP_XWAY(GPIO23, GPIO, EBU, MII, CGU),
379 MFP_XWAY(GPIO24, GPIO, EBU, EBU2, MDIO),
380 MFP_XWAY(GPIO25, GPIO, EBU, MII, GPT),
381 MFP_XWAY(GPIO26, GPIO, EBU, MII, SDIO),
382 MFP_XWAY(GPIO27, GPIO, EBU, NONE, MDIO),
383 MFP_XWAY(GPIO28, GPIO, MII, EBU, SDIO),
384 MFP_XWAY(GPIO29, GPIO, EBU, MII, EXIN),
385 MFP_XWAY(GPIO30, GPIO, NONE, NONE, NONE),
386 MFP_XWAY(GPIO31, GPIO, NONE, NONE, NONE),
426 GRP_MUX("spi", SPI, ase_pins_spi), /* DEPRECATED */
427 GRP_MUX("spi_di", SPI, ase_pins_spi_di),
428 GRP_MUX("spi_do", SPI, ase_pins_spi_do),
429 GRP_MUX("spi_clk", SPI, ase_pins_spi_clk),
430 GRP_MUX("spi_cs1", SPI, ase_pins_spi_cs1),
431 GRP_MUX("spi_cs2", SPI, ase_pins_spi_cs2),
432 GRP_MUX("spi_cs3", SPI, ase_pins_spi_cs3),
460 static const char * const ase_spi_grps[] = {"spi", /* DEPRECATED */
466 {"spi", ARRAY_AND_SIZE(ase_spi_grps)},
478 /* --------- danube related code --------- */
483 MFP_XWAY(GPIO0, GPIO, EXIN, SDIO, TDM),
484 MFP_XWAY(GPIO1, GPIO, EXIN, CBUS, MII),
485 MFP_XWAY(GPIO2, GPIO, CGU, EXIN, MII),
486 MFP_XWAY(GPIO3, GPIO, CGU, SDIO, PCI),
487 MFP_XWAY(GPIO4, GPIO, STP, DFE, ASC),
488 MFP_XWAY(GPIO5, GPIO, STP, MII, DFE),
489 MFP_XWAY(GPIO6, GPIO, STP, GPT, ASC),
490 MFP_XWAY(GPIO7, GPIO, CGU, CBUS, MII),
491 MFP_XWAY(GPIO8, GPIO, CGU, NMI, MII),
492 MFP_XWAY(GPIO9, GPIO, ASC, SPI, MII),
493 MFP_XWAY(GPIO10, GPIO, ASC, SPI, MII),
494 MFP_XWAY(GPIO11, GPIO, ASC, CBUS, SPI),
495 MFP_XWAY(GPIO12, GPIO, ASC, CBUS, MCD),
496 MFP_XWAY(GPIO13, GPIO, EBU, SPI, MII),
497 MFP_XWAY(GPIO14, GPIO, CGU, CBUS, MII),
498 MFP_XWAY(GPIO15, GPIO, SPI, SDIO, JTAG),
499 MFP_XWAY(GPIO16, GPIO, SPI, SDIO, JTAG),
500 MFP_XWAY(GPIO17, GPIO, SPI, SDIO, JTAG),
501 MFP_XWAY(GPIO18, GPIO, SPI, SDIO, JTAG),
502 MFP_XWAY(GPIO19, GPIO, PCI, SDIO, MII),
503 MFP_XWAY(GPIO20, GPIO, JTAG, SDIO, MII),
504 MFP_XWAY(GPIO21, GPIO, PCI, EBU, GPT),
505 MFP_XWAY(GPIO22, GPIO, SPI, MCD, MII),
506 MFP_XWAY(GPIO23, GPIO, EBU, PCI, STP),
507 MFP_XWAY(GPIO24, GPIO, EBU, TDM, PCI),
508 MFP_XWAY(GPIO25, GPIO, TDM, SDIO, ASC),
509 MFP_XWAY(GPIO26, GPIO, EBU, TDM, SDIO),
510 MFP_XWAY(GPIO27, GPIO, TDM, SDIO, ASC),
511 MFP_XWAY(GPIO28, GPIO, GPT, MII, SDIO),
512 MFP_XWAY(GPIO29, GPIO, PCI, CBUS, MII),
513 MFP_XWAY(GPIO30, GPIO, PCI, CBUS, MII),
514 MFP_XWAY(GPIO31, GPIO, EBU, PCI, MII),
584 GRP_MUX("spi", SPI, danube_pins_spi), /* DEPRECATED */
585 GRP_MUX("spi_di", SPI, danube_pins_spi_di),
586 GRP_MUX("spi_do", SPI, danube_pins_spi_do),
587 GRP_MUX("spi_clk", SPI, danube_pins_spi_clk),
588 GRP_MUX("spi_cs1", SPI, danube_pins_spi_cs1),
589 GRP_MUX("spi_cs2", SPI, danube_pins_spi_cs2),
590 GRP_MUX("spi_cs3", SPI, danube_pins_spi_cs3),
591 GRP_MUX("spi_cs4", SPI, danube_pins_spi_cs4),
592 GRP_MUX("spi_cs5", SPI, danube_pins_spi_cs5),
593 GRP_MUX("spi_cs6", SPI, danube_pins_spi_cs6),
618 static const char * const danube_spi_grps[] = {"spi", /* DEPRECATED */
640 {"spi", ARRAY_AND_SIZE(danube_spi_grps)},
653 /* --------- xrx100 related code --------- */
658 MFP_XWAY(GPIO0, GPIO, EXIN, SDIO, TDM),
659 MFP_XWAY(GPIO1, GPIO, EXIN, CBUS, SIN),
660 MFP_XWAY(GPIO2, GPIO, CGU, EXIN, NONE),
661 MFP_XWAY(GPIO3, GPIO, CGU, SDIO, PCI),
662 MFP_XWAY(GPIO4, GPIO, STP, DFE, ASC),
663 MFP_XWAY(GPIO5, GPIO, STP, NONE, DFE),
664 MFP_XWAY(GPIO6, GPIO, STP, GPT, ASC),
665 MFP_XWAY(GPIO7, GPIO, CGU, CBUS, NONE),
666 MFP_XWAY(GPIO8, GPIO, CGU, NMI, NONE),
667 MFP_XWAY(GPIO9, GPIO, ASC, SPI, EXIN),
668 MFP_XWAY(GPIO10, GPIO, ASC, SPI, EXIN),
669 MFP_XWAY(GPIO11, GPIO, ASC, CBUS, SPI),
670 MFP_XWAY(GPIO12, GPIO, ASC, CBUS, MCD),
671 MFP_XWAY(GPIO13, GPIO, EBU, SPI, NONE),
672 MFP_XWAY(GPIO14, GPIO, CGU, NONE, NONE),
673 MFP_XWAY(GPIO15, GPIO, SPI, SDIO, MCD),
674 MFP_XWAY(GPIO16, GPIO, SPI, SDIO, NONE),
675 MFP_XWAY(GPIO17, GPIO, SPI, SDIO, NONE),
676 MFP_XWAY(GPIO18, GPIO, SPI, SDIO, NONE),
677 MFP_XWAY(GPIO19, GPIO, PCI, SDIO, CGU),
678 MFP_XWAY(GPIO20, GPIO, NONE, SDIO, EBU),
679 MFP_XWAY(GPIO21, GPIO, PCI, EBU, GPT),
680 MFP_XWAY(GPIO22, GPIO, SPI, NONE, EBU),
681 MFP_XWAY(GPIO23, GPIO, EBU, PCI, STP),
682 MFP_XWAY(GPIO24, GPIO, EBU, TDM, PCI),
683 MFP_XWAY(GPIO25, GPIO, TDM, SDIO, ASC),
684 MFP_XWAY(GPIO26, GPIO, EBU, TDM, SDIO),
685 MFP_XWAY(GPIO27, GPIO, TDM, SDIO, ASC),
686 MFP_XWAY(GPIO28, GPIO, GPT, NONE, SDIO),
687 MFP_XWAY(GPIO29, GPIO, PCI, CBUS, NONE),
688 MFP_XWAY(GPIO30, GPIO, PCI, CBUS, NONE),
689 MFP_XWAY(GPIO31, GPIO, EBU, PCI, NONE),
690 MFP_XWAY(GPIO32, GPIO, MII, NONE, EBU),
691 MFP_XWAY(GPIO33, GPIO, MII, NONE, EBU),
692 MFP_XWAY(GPIO34, GPIO, SIN, SSI, NONE),
693 MFP_XWAY(GPIO35, GPIO, SIN, SSI, NONE),
694 MFP_XWAY(GPIO36, GPIO, SIN, SSI, NONE),
695 MFP_XWAY(GPIO37, GPIO, PCI, NONE, NONE),
696 MFP_XWAY(GPIO38, GPIO, PCI, NONE, NONE),
697 MFP_XWAY(GPIO39, GPIO, NONE, EXIN, NONE),
698 MFP_XWAY(GPIO40, GPIO, MII, TDM, NONE),
699 MFP_XWAY(GPIO41, GPIO, MII, TDM, NONE),
700 MFP_XWAY(GPIO42, GPIO, MDIO, NONE, NONE),
701 MFP_XWAY(GPIO43, GPIO, MDIO, NONE, NONE),
702 MFP_XWAY(GPIO44, GPIO, MII, SIN, NONE),
703 MFP_XWAY(GPIO45, GPIO, MII, NONE, SIN),
704 MFP_XWAY(GPIO46, GPIO, MII, NONE, EXIN),
705 MFP_XWAY(GPIO47, GPIO, MII, NONE, SIN),
706 MFP_XWAY(GPIO48, GPIO, EBU, NONE, NONE),
707 MFP_XWAY(GPIO49, GPIO, EBU, NONE, NONE),
708 MFP_XWAY(GPIO50, GPIO, NONE, NONE, NONE),
709 MFP_XWAY(GPIO51, GPIO, NONE, NONE, NONE),
710 MFP_XWAY(GPIO52, GPIO, NONE, NONE, NONE),
711 MFP_XWAY(GPIO53, GPIO, NONE, NONE, NONE),
712 MFP_XWAY(GPIO54, GPIO, NONE, NONE, NONE),
713 MFP_XWAY(GPIO55, GPIO, NONE, NONE, NONE),
793 GRP_MUX("spi_di", SPI, xrx100_pins_spi_di),
794 GRP_MUX("spi_do", SPI, xrx100_pins_spi_do),
795 GRP_MUX("spi_clk", SPI, xrx100_pins_spi_clk),
796 GRP_MUX("spi_cs1", SPI, xrx100_pins_spi_cs1),
797 GRP_MUX("spi_cs2", SPI, xrx100_pins_spi_cs2),
798 GRP_MUX("spi_cs3", SPI, xrx100_pins_spi_cs3),
799 GRP_MUX("spi_cs4", SPI, xrx100_pins_spi_cs4),
800 GRP_MUX("spi_cs5", SPI, xrx100_pins_spi_cs5),
801 GRP_MUX("spi_cs6", SPI, xrx100_pins_spi_cs6),
853 {"spi", ARRAY_AND_SIZE(xrx100_spi_grps)},
866 /* --------- xrx200 related code --------- */
871 MFP_XWAY(GPIO0, GPIO, EXIN, SDIO, TDM),
872 MFP_XWAY(GPIO1, GPIO, EXIN, CBUS, SIN),
873 MFP_XWAY(GPIO2, GPIO, CGU, EXIN, GPHY),
874 MFP_XWAY(GPIO3, GPIO, CGU, SDIO, PCI),
875 MFP_XWAY(GPIO4, GPIO, STP, DFE, USIF),
876 MFP_XWAY(GPIO5, GPIO, STP, GPHY, DFE),
877 MFP_XWAY(GPIO6, GPIO, STP, GPT, USIF),
878 MFP_XWAY(GPIO7, GPIO, CGU, CBUS, GPHY),
879 MFP_XWAY(GPIO8, GPIO, CGU, NMI, NONE),
880 MFP_XWAY(GPIO9, GPIO, USIF, SPI, EXIN),
881 MFP_XWAY(GPIO10, GPIO, USIF, SPI, EXIN),
882 MFP_XWAY(GPIO11, GPIO, USIF, CBUS, SPI),
883 MFP_XWAY(GPIO12, GPIO, USIF, CBUS, MCD),
884 MFP_XWAY(GPIO13, GPIO, EBU, SPI, NONE),
885 MFP_XWAY(GPIO14, GPIO, CGU, CBUS, USIF),
886 MFP_XWAY(GPIO15, GPIO, SPI, SDIO, MCD),
887 MFP_XWAY(GPIO16, GPIO, SPI, SDIO, NONE),
888 MFP_XWAY(GPIO17, GPIO, SPI, SDIO, NONE),
889 MFP_XWAY(GPIO18, GPIO, SPI, SDIO, NONE),
890 MFP_XWAY(GPIO19, GPIO, PCI, SDIO, CGU),
891 MFP_XWAY(GPIO20, GPIO, NONE, SDIO, EBU),
892 MFP_XWAY(GPIO21, GPIO, PCI, EBU, GPT),
893 MFP_XWAY(GPIO22, GPIO, SPI, CGU, EBU),
894 MFP_XWAY(GPIO23, GPIO, EBU, PCI, STP),
895 MFP_XWAY(GPIO24, GPIO, EBU, TDM, PCI),
896 MFP_XWAY(GPIO25, GPIO, TDM, SDIO, USIF),
897 MFP_XWAY(GPIO26, GPIO, EBU, TDM, SDIO),
898 MFP_XWAY(GPIO27, GPIO, TDM, SDIO, USIF),
899 MFP_XWAY(GPIO28, GPIO, GPT, PCI, SDIO),
900 MFP_XWAY(GPIO29, GPIO, PCI, CBUS, EXIN),
901 MFP_XWAY(GPIO30, GPIO, PCI, CBUS, NONE),
902 MFP_XWAY(GPIO31, GPIO, EBU, PCI, NONE),
903 MFP_XWAY(GPIO32, GPIO, MII, NONE, EBU),
904 MFP_XWAY(GPIO33, GPIO, MII, NONE, EBU),
905 MFP_XWAY(GPIO34, GPIO, SIN, SSI, NONE),
906 MFP_XWAY(GPIO35, GPIO, SIN, SSI, NONE),
907 MFP_XWAY(GPIO36, GPIO, SIN, SSI, EXIN),
908 MFP_XWAY(GPIO37, GPIO, USIF, NONE, PCI),
909 MFP_XWAY(GPIO38, GPIO, PCI, USIF, NONE),
910 MFP_XWAY(GPIO39, GPIO, USIF, EXIN, NONE),
911 MFP_XWAY(GPIO40, GPIO, MII, TDM, NONE),
912 MFP_XWAY(GPIO41, GPIO, MII, TDM, NONE),
913 MFP_XWAY(GPIO42, GPIO, MDIO, NONE, NONE),
914 MFP_XWAY(GPIO43, GPIO, MDIO, NONE, NONE),
915 MFP_XWAY(GPIO44, GPIO, MII, SIN, GPHY),
916 MFP_XWAY(GPIO45, GPIO, MII, GPHY, SIN),
917 MFP_XWAY(GPIO46, GPIO, MII, NONE, EXIN),
918 MFP_XWAY(GPIO47, GPIO, MII, GPHY, SIN),
919 MFP_XWAY(GPIO48, GPIO, EBU, NONE, NONE),
920 MFP_XWAY(GPIO49, GPIO, EBU, NONE, NONE),
1021 GRP_MUX("spi_di", SPI, xrx200_pins_spi_di),
1022 GRP_MUX("spi_do", SPI, xrx200_pins_spi_do),
1023 GRP_MUX("spi_clk", SPI, xrx200_pins_spi_clk),
1024 GRP_MUX("spi_cs1", SPI, xrx200_pins_spi_cs1),
1025 GRP_MUX("spi_cs2", SPI, xrx200_pins_spi_cs2),
1026 GRP_MUX("spi_cs3", SPI, xrx200_pins_spi_cs3),
1027 GRP_MUX("spi_cs4", SPI, xrx200_pins_spi_cs4),
1028 GRP_MUX("spi_cs5", SPI, xrx200_pins_spi_cs5),
1029 GRP_MUX("spi_cs6", SPI, xrx200_pins_spi_cs6),
1108 {"spi", ARRAY_AND_SIZE(xrx200_spi_grps)},
1122 /* --------- xrx300 related code --------- */
1127 MFP_XWAY(GPIO0, GPIO, EXIN, EPHY, NONE),
1128 MFP_XWAY(GPIO1, GPIO, NONE, EXIN, NONE),
1130 MFP_XWAY(GPIO3, GPIO, CGU, NONE, NONE),
1131 MFP_XWAY(GPIO4, GPIO, STP, DFE, NONE),
1132 MFP_XWAY(GPIO5, GPIO, STP, EPHY, DFE),
1133 MFP_XWAY(GPIO6, GPIO, STP, NONE, NONE),
1135 MFP_XWAY(GPIO8, GPIO, CGU, GPHY, EPHY),
1136 MFP_XWAY(GPIO9, GPIO, WIFI, NONE, EXIN),
1137 MFP_XWAY(GPIO10, GPIO, USIF, SPI, EXIN),
1138 MFP_XWAY(GPIO11, GPIO, USIF, WIFI, SPI),
1140 MFP_XWAY(GPIO13, GPIO, EBU, NONE, NONE),
1141 MFP_XWAY(GPIO14, GPIO, CGU, USIF, EPHY),
1142 MFP_XWAY(GPIO15, GPIO, SPI, NONE, MCD),
1143 MFP_XWAY(GPIO16, GPIO, SPI, EXIN, NONE),
1144 MFP_XWAY(GPIO17, GPIO, SPI, NONE, NONE),
1145 MFP_XWAY(GPIO18, GPIO, SPI, NONE, NONE),
1146 MFP_XWAY(GPIO19, GPIO, USIF, NONE, EPHY),
1150 MFP_XWAY(GPIO23, GPIO, EBU, NONE, NONE),
1151 MFP_XWAY(GPIO24, GPIO, EBU, NONE, NONE),
1152 MFP_XWAY(GPIO25, GPIO, TDM, NONE, NONE),
1153 MFP_XWAY(GPIO26, GPIO, TDM, NONE, NONE),
1154 MFP_XWAY(GPIO27, GPIO, TDM, NONE, NONE),
1161 MFP_XWAY(GPIO34, GPIO, NONE, SSI, NONE),
1162 MFP_XWAY(GPIO35, GPIO, NONE, SSI, NONE),
1163 MFP_XWAY(GPIO36, GPIO, NONE, SSI, NONE),
1169 MFP_XWAY(GPIO42, GPIO, MDIO, NONE, NONE),
1170 MFP_XWAY(GPIO43, GPIO, MDIO, NONE, NONE),
1175 MFP_XWAY(GPIO48, GPIO, EBU, NONE, NONE),
1176 MFP_XWAY(GPIO49, GPIO, EBU, NONE, NONE),
1177 MFP_XWAY(GPIO50, GPIO, EBU, NONE, NONE),
1178 MFP_XWAY(GPIO51, GPIO, EBU, NONE, NONE),
1179 MFP_XWAY(GPIO52, GPIO, EBU, NONE, NONE),
1180 MFP_XWAY(GPIO53, GPIO, EBU, NONE, NONE),
1181 MFP_XWAY(GPIO54, GPIO, EBU, NONE, NONE),
1182 MFP_XWAY(GPIO55, GPIO, EBU, NONE, NONE),
1183 MFP_XWAY(GPIO56, GPIO, EBU, NONE, NONE),
1184 MFP_XWAY(GPIO57, GPIO, EBU, NONE, NONE),
1185 MFP_XWAY(GPIO58, GPIO, EBU, TDM, NONE),
1186 MFP_XWAY(GPIO59, GPIO, EBU, NONE, NONE),
1187 MFP_XWAY(GPIO60, GPIO, EBU, NONE, NONE),
1188 MFP_XWAY(GPIO61, GPIO, EBU, NONE, NONE),
1276 GRP_MUX("spi_di", SPI, xrx300_pins_spi_di),
1277 GRP_MUX("spi_do", SPI, xrx300_pins_spi_do),
1278 GRP_MUX("spi_clk", SPI, xrx300_pins_spi_clk),
1279 GRP_MUX("spi_cs1", SPI, xrx300_pins_spi_cs1),
1280 GRP_MUX("spi_cs4", SPI, xrx300_pins_spi_cs4),
1281 GRP_MUX("spi_cs6", SPI, xrx300_pins_spi_cs6),
1324 {"spi", ARRAY_AND_SIZE(xrx300_spi_grps)},
1335 /* --------- pinconf related code --------- */
1352 !gpio_getbit(info->membase[0], reg, PORT_PIN(pin))); in xway_pinconf_get()
1360 if (!gpio_getbit(info->membase[0], reg, PORT_PIN(pin))) { in xway_pinconf_get()
1369 if (!gpio_getbit(info->membase[0], reg, PORT_PIN(pin))) in xway_pinconf_get()
1378 gpio_getbit(info->membase[0], reg, PORT_PIN(pin))); in xway_pinconf_get()
1381 dev_err(pctldev->dev, "Invalid config param %04x\n", param); in xway_pinconf_get()
1382 return -ENOTSUPP; in xway_pinconf_get()
1410 gpio_setbit(info->membase[0], in xway_pinconf_set()
1414 gpio_clearbit(info->membase[0], in xway_pinconf_set()
1425 gpio_clearbit(info->membase[0], in xway_pinconf_set()
1430 gpio_setbit(info->membase[0], reg, PORT_PIN(pin)); in xway_pinconf_set()
1437 gpio_clearbit(info->membase[0], in xway_pinconf_set()
1441 gpio_setbit(info->membase[0], in xway_pinconf_set()
1445 dev_err(pctldev->dev, in xway_pinconf_set()
1452 gpio_clearbit(info->membase[0], in xway_pinconf_set()
1456 gpio_setbit(info->membase[0], in xway_pinconf_set()
1462 dev_err(pctldev->dev, in xway_pinconf_set()
1464 return -ENOTSUPP; in xway_pinconf_set()
1479 for (i = 0; i < info->grps[selector].npins && !ret; i++) in xway_pinconf_group_set()
1481 info->grps[selector].pins[i], in xway_pinconf_group_set()
1510 gpio_setbit(info->membase[0], GPIO_ALT0(pin), PORT_PIN(pin)); in xway_mux_apply()
1512 gpio_clearbit(info->membase[0], GPIO_ALT0(pin), PORT_PIN(pin)); in xway_mux_apply()
1515 gpio_setbit(info->membase[0], alt1_reg, PORT_PIN(pin)); in xway_mux_apply()
1517 gpio_clearbit(info->membase[0], alt1_reg, PORT_PIN(pin)); in xway_mux_apply()
1524 {"lantiq,open-drain", LTQ_PINCONF_PARAM_OPEN_DRAIN},
1535 /* --------- gpio_chip related code --------- */
1538 struct ltq_pinmux_info *info = dev_get_drvdata(chip->parent); in xway_gpio_set()
1541 gpio_setbit(info->membase[0], GPIO_OUT(pin), PORT_PIN(pin)); in xway_gpio_set()
1543 gpio_clearbit(info->membase[0], GPIO_OUT(pin), PORT_PIN(pin)); in xway_gpio_set()
1548 struct ltq_pinmux_info *info = dev_get_drvdata(chip->parent); in xway_gpio_get()
1550 return !!gpio_getbit(info->membase[0], GPIO_IN(pin), PORT_PIN(pin)); in xway_gpio_get()
1555 struct ltq_pinmux_info *info = dev_get_drvdata(chip->parent); in xway_gpio_dir_in()
1557 gpio_clearbit(info->membase[0], GPIO_DIR(pin), PORT_PIN(pin)); in xway_gpio_dir_in()
1564 struct ltq_pinmux_info *info = dev_get_drvdata(chip->parent); in xway_gpio_dir_out()
1567 gpio_setbit(info->membase[0], GPIO3_OD, PORT_PIN(pin)); in xway_gpio_dir_out()
1569 gpio_setbit(info->membase[0], GPIO_OD(pin), PORT_PIN(pin)); in xway_gpio_dir_out()
1570 gpio_setbit(info->membase[0], GPIO_DIR(pin), PORT_PIN(pin)); in xway_gpio_dir_out()
1578 * Returns the mapped IRQ (external interrupt) number for a given GPIO pin.
1582 struct ltq_pinmux_info *info = dev_get_drvdata(chip->parent); in xway_gpio_to_irq()
1585 for (i = 0; i < info->num_exin; i++) in xway_gpio_to_irq()
1586 if (info->exin[i] == offset) in xway_gpio_to_irq()
1589 return -1; in xway_gpio_to_irq()
1593 .label = "gpio-xway",
1601 .base = -1,
1605 /* --------- register the pinctrl layer --------- */
1690 .name = "XWAY GPIO",
1695 { .compatible = "lantiq,pinctrl-xway", .data = &danube_pinctrl}, /*DEPRECATED*/
1696 { .compatible = "lantiq,pinctrl-xr9", .data = &xr9_pinctrl}, /*DEPRECATED*/
1697 { .compatible = "lantiq,pinctrl-ase", .data = &ase_pinctrl}, /*DEPRECATED*/
1698 { .compatible = "lantiq,ase-pinctrl", .data = &ase_pinctrl},
1699 { .compatible = "lantiq,danube-pinctrl", .data = &danube_pinctrl},
1700 { .compatible = "lantiq,xrx100-pinctrl", .data = &xrx100_pinctrl},
1701 { .compatible = "lantiq,xrx200-pinctrl", .data = &xrx200_pinctrl},
1702 { .compatible = "lantiq,xrx300-pinctrl", .data = &xrx300_pinctrl},
1716 xway_info.membase[0] = devm_ioremap_resource(&pdev->dev, res); in pinmux_xway_probe()
1720 match = of_match_device(xway_match, &pdev->dev); in pinmux_xway_probe()
1722 xway_soc = (const struct pinctrl_xway_soc *) match->data; in pinmux_xway_probe()
1727 xway_chip.ngpio = xway_soc->pin_count; in pinmux_xway_probe()
1730 xway_info.pads = devm_kcalloc(&pdev->dev, in pinmux_xway_probe()
1734 return -ENOMEM; in pinmux_xway_probe()
1738 char *name = devm_kzalloc(&pdev->dev, 5, GFP_KERNEL); in pinmux_xway_probe()
1741 return -ENOMEM; in pinmux_xway_probe()
1750 xway_pctrl_desc.name = dev_name(&pdev->dev); in pinmux_xway_probe()
1755 xway_info.mfp = xway_soc->mfp; in pinmux_xway_probe()
1756 xway_info.grps = xway_soc->grps; in pinmux_xway_probe()
1757 xway_info.num_grps = xway_soc->num_grps; in pinmux_xway_probe()
1758 xway_info.funcs = xway_soc->funcs; in pinmux_xway_probe()
1759 xway_info.num_funcs = xway_soc->num_funcs; in pinmux_xway_probe()
1760 xway_info.exin = xway_soc->exin; in pinmux_xway_probe()
1761 xway_info.num_exin = xway_soc->num_exin; in pinmux_xway_probe()
1766 dev_err(&pdev->dev, "Failed to register pinctrl driver\n"); in pinmux_xway_probe()
1770 /* register the gpio chip */ in pinmux_xway_probe()
1771 xway_chip.parent = &pdev->dev; in pinmux_xway_probe()
1773 xway_chip.of_node = pdev->dev.of_node; in pinmux_xway_probe()
1774 ret = devm_gpiochip_add_data(&pdev->dev, &xway_chip, NULL); in pinmux_xway_probe()
1776 dev_err(&pdev->dev, "Failed to register gpio chip\n"); in pinmux_xway_probe()
1781 * For DeviceTree-supported systems, the gpio core checks the in pinmux_xway_probe()
1782 * pinctrl's device node for the "gpio-ranges" property. in pinmux_xway_probe()
1787 * files which don't set the "gpio-ranges" property or systems that in pinmux_xway_probe()
1790 if (!of_property_read_bool(pdev->dev.of_node, "gpio-ranges")) { in pinmux_xway_probe()
1791 /* finish with registering the gpio range in pinctrl */ in pinmux_xway_probe()
1797 dev_info(&pdev->dev, "Init done\n"); in pinmux_xway_probe()
1804 .name = "pinctrl-xway",