pinctrl-meson8b.c (ac1afc46573a7d5447f23be5f88bc43580a92530) pinctrl-meson8b.c (9dab1868ec0db4bce44db2759beadf1b2156085a)
1/*
2 * Pin controller and GPIO driver for Amlogic Meson8b.
3 *
4 * Copyright (C) 2015 Endless Mobile, Inc.
5 * Author: Carlo Caione <carlo@endlessm.com>
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * version 2 as published by the Free Software Foundation.
10 *
11 * You should have received a copy of the GNU General Public License
12 * along with this program. If not, see <http://www.gnu.org/licenses/>.
13 */
14
15#include <dt-bindings/gpio/meson8b-gpio.h>
16#include "pinctrl-meson.h"
17
18#define AO_OFF 130
19
1/*
2 * Pin controller and GPIO driver for Amlogic Meson8b.
3 *
4 * Copyright (C) 2015 Endless Mobile, Inc.
5 * Author: Carlo Caione <carlo@endlessm.com>
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * version 2 as published by the Free Software Foundation.
10 *
11 * You should have received a copy of the GNU General Public License
12 * along with this program. If not, see <http://www.gnu.org/licenses/>.
13 */
14
15#include <dt-bindings/gpio/meson8b-gpio.h>
16#include "pinctrl-meson.h"
17
18#define AO_OFF 130
19
20static const struct pinctrl_pin_desc meson8b_pins[] = {
20static const struct pinctrl_pin_desc meson8b_cbus_pins[] = {
21 MESON_PIN(GPIOX_0, 0),
22 MESON_PIN(GPIOX_1, 0),
23 MESON_PIN(GPIOX_2, 0),
24 MESON_PIN(GPIOX_3, 0),
25 MESON_PIN(GPIOX_4, 0),
26 MESON_PIN(GPIOX_5, 0),
27 MESON_PIN(GPIOX_6, 0),
28 MESON_PIN(GPIOX_7, 0),

--- 73 unchanged lines hidden (view full) ---

102 MESON_PIN(DIF_1_P, 0),
103 MESON_PIN(DIF_1_N, 0),
104 MESON_PIN(DIF_2_P, 0),
105 MESON_PIN(DIF_2_N, 0),
106 MESON_PIN(DIF_3_P, 0),
107 MESON_PIN(DIF_3_N, 0),
108 MESON_PIN(DIF_4_P, 0),
109 MESON_PIN(DIF_4_N, 0),
21 MESON_PIN(GPIOX_0, 0),
22 MESON_PIN(GPIOX_1, 0),
23 MESON_PIN(GPIOX_2, 0),
24 MESON_PIN(GPIOX_3, 0),
25 MESON_PIN(GPIOX_4, 0),
26 MESON_PIN(GPIOX_5, 0),
27 MESON_PIN(GPIOX_6, 0),
28 MESON_PIN(GPIOX_7, 0),

--- 73 unchanged lines hidden (view full) ---

102 MESON_PIN(DIF_1_P, 0),
103 MESON_PIN(DIF_1_N, 0),
104 MESON_PIN(DIF_2_P, 0),
105 MESON_PIN(DIF_2_N, 0),
106 MESON_PIN(DIF_3_P, 0),
107 MESON_PIN(DIF_3_N, 0),
108 MESON_PIN(DIF_4_P, 0),
109 MESON_PIN(DIF_4_N, 0),
110};
110
111
112static const struct pinctrl_pin_desc meson8b_aobus_pins[] = {
111 MESON_PIN(GPIOAO_0, AO_OFF),
112 MESON_PIN(GPIOAO_1, AO_OFF),
113 MESON_PIN(GPIOAO_2, AO_OFF),
114 MESON_PIN(GPIOAO_3, AO_OFF),
115 MESON_PIN(GPIOAO_4, AO_OFF),
116 MESON_PIN(GPIOAO_5, AO_OFF),
117 MESON_PIN(GPIOAO_6, AO_OFF),
118 MESON_PIN(GPIOAO_7, AO_OFF),

--- 222 unchanged lines hidden (view full) ---

341static const unsigned int eth_rx_clk_pins[] = { PIN(DIF_1_N, 0) };
342static const unsigned int eth_txd0_1_pins[] = { PIN(DIF_2_P, 0) };
343static const unsigned int eth_txd1_1_pins[] = { PIN(DIF_2_N, 0) };
344static const unsigned int eth_tx_en_pins[] = { PIN(DIF_3_P, 0) };
345static const unsigned int eth_ref_clk_pins[] = { PIN(DIF_3_N, 0) };
346static const unsigned int eth_mdc_pins[] = { PIN(DIF_4_P, 0) };
347static const unsigned int eth_mdio_en_pins[] = { PIN(DIF_4_N, 0) };
348
113 MESON_PIN(GPIOAO_0, AO_OFF),
114 MESON_PIN(GPIOAO_1, AO_OFF),
115 MESON_PIN(GPIOAO_2, AO_OFF),
116 MESON_PIN(GPIOAO_3, AO_OFF),
117 MESON_PIN(GPIOAO_4, AO_OFF),
118 MESON_PIN(GPIOAO_5, AO_OFF),
119 MESON_PIN(GPIOAO_6, AO_OFF),
120 MESON_PIN(GPIOAO_7, AO_OFF),

--- 222 unchanged lines hidden (view full) ---

343static const unsigned int eth_rx_clk_pins[] = { PIN(DIF_1_N, 0) };
344static const unsigned int eth_txd0_1_pins[] = { PIN(DIF_2_P, 0) };
345static const unsigned int eth_txd1_1_pins[] = { PIN(DIF_2_N, 0) };
346static const unsigned int eth_tx_en_pins[] = { PIN(DIF_3_P, 0) };
347static const unsigned int eth_ref_clk_pins[] = { PIN(DIF_3_N, 0) };
348static const unsigned int eth_mdc_pins[] = { PIN(DIF_4_P, 0) };
349static const unsigned int eth_mdio_en_pins[] = { PIN(DIF_4_N, 0) };
350
349static struct meson_pmx_group meson8b_groups[] = {
351static struct meson_pmx_group meson8b_cbus_groups[] = {
350 GPIO_GROUP(GPIOX_0, 0),
351 GPIO_GROUP(GPIOX_1, 0),
352 GPIO_GROUP(GPIOX_2, 0),
353 GPIO_GROUP(GPIOX_3, 0),
354 GPIO_GROUP(GPIOX_4, 0),
355 GPIO_GROUP(GPIOX_5, 0),
356 GPIO_GROUP(GPIOX_6, 0),
357 GPIO_GROUP(GPIOX_7, 0),

--- 46 unchanged lines hidden (view full) ---

404 GPIO_GROUP(DIF_1_N, 0),
405 GPIO_GROUP(DIF_2_P, 0),
406 GPIO_GROUP(DIF_2_N, 0),
407 GPIO_GROUP(DIF_3_P, 0),
408 GPIO_GROUP(DIF_3_N, 0),
409 GPIO_GROUP(DIF_4_P, 0),
410 GPIO_GROUP(DIF_4_N, 0),
411
352 GPIO_GROUP(GPIOX_0, 0),
353 GPIO_GROUP(GPIOX_1, 0),
354 GPIO_GROUP(GPIOX_2, 0),
355 GPIO_GROUP(GPIOX_3, 0),
356 GPIO_GROUP(GPIOX_4, 0),
357 GPIO_GROUP(GPIOX_5, 0),
358 GPIO_GROUP(GPIOX_6, 0),
359 GPIO_GROUP(GPIOX_7, 0),

--- 46 unchanged lines hidden (view full) ---

406 GPIO_GROUP(DIF_1_N, 0),
407 GPIO_GROUP(DIF_2_P, 0),
408 GPIO_GROUP(DIF_2_N, 0),
409 GPIO_GROUP(DIF_3_P, 0),
410 GPIO_GROUP(DIF_3_N, 0),
411 GPIO_GROUP(DIF_4_P, 0),
412 GPIO_GROUP(DIF_4_N, 0),
413
412 GPIO_GROUP(GPIOAO_0, AO_OFF),
413 GPIO_GROUP(GPIOAO_1, AO_OFF),
414 GPIO_GROUP(GPIOAO_2, AO_OFF),
415 GPIO_GROUP(GPIOAO_3, AO_OFF),
416 GPIO_GROUP(GPIOAO_4, AO_OFF),
417 GPIO_GROUP(GPIOAO_5, AO_OFF),
418 GPIO_GROUP(GPIOAO_6, AO_OFF),
419 GPIO_GROUP(GPIOAO_7, AO_OFF),
420 GPIO_GROUP(GPIOAO_8, AO_OFF),
421 GPIO_GROUP(GPIOAO_9, AO_OFF),
422 GPIO_GROUP(GPIOAO_10, AO_OFF),
423 GPIO_GROUP(GPIOAO_11, AO_OFF),
424 GPIO_GROUP(GPIOAO_12, AO_OFF),
425 GPIO_GROUP(GPIOAO_13, AO_OFF),
426 GPIO_GROUP(GPIO_BSD_EN, AO_OFF),
427 GPIO_GROUP(GPIO_TEST_N, AO_OFF),
428
429 /* bank X */
430 GROUP(sd_d0_a, 8, 5),
431 GROUP(sd_d1_a, 8, 4),
432 GROUP(sd_d2_a, 8, 3),
433 GROUP(sd_d3_a, 8, 2),
434 GROUP(sdxc_d0_0_a, 5, 29),
435 GROUP(sdxc_d47_a, 5, 12),
436 GROUP(sdxc_d13_0_a, 5, 28),

--- 130 unchanged lines hidden (view full) ---

567 GROUP(sd_cmd_b, 2, 10),
568 GROUP(sd_d3_b, 2, 12),
569 GROUP(sd_d2_b, 2, 13),
570 GROUP(sdxc_d13_b, 2, 6),
571 GROUP(sdxc_d0_b, 2, 7),
572 GROUP(sdxc_clk_b, 2, 5),
573 GROUP(sdxc_cmd_b, 2, 4),
574
414 /* bank X */
415 GROUP(sd_d0_a, 8, 5),
416 GROUP(sd_d1_a, 8, 4),
417 GROUP(sd_d2_a, 8, 3),
418 GROUP(sd_d3_a, 8, 2),
419 GROUP(sdxc_d0_0_a, 5, 29),
420 GROUP(sdxc_d47_a, 5, 12),
421 GROUP(sdxc_d13_0_a, 5, 28),

--- 130 unchanged lines hidden (view full) ---

552 GROUP(sd_cmd_b, 2, 10),
553 GROUP(sd_d3_b, 2, 12),
554 GROUP(sd_d2_b, 2, 13),
555 GROUP(sdxc_d13_b, 2, 6),
556 GROUP(sdxc_d0_b, 2, 7),
557 GROUP(sdxc_clk_b, 2, 5),
558 GROUP(sdxc_cmd_b, 2, 4),
559
560 /* bank DIF */
561 GROUP(eth_rxd1, 6, 0),
562 GROUP(eth_rxd0, 6, 1),
563 GROUP(eth_rx_dv, 6, 2),
564 GROUP(eth_rx_clk, 6, 3),
565 GROUP(eth_txd0_1, 6, 4),
566 GROUP(eth_txd1_1, 6, 5),
567 GROUP(eth_tx_en, 6, 0),
568 GROUP(eth_ref_clk, 6, 8),
569 GROUP(eth_mdc, 6, 9),
570 GROUP(eth_mdio_en, 6, 10),
571};
572
573static struct meson_pmx_group meson8b_aobus_groups[] = {
574 GPIO_GROUP(GPIOAO_0, AO_OFF),
575 GPIO_GROUP(GPIOAO_1, AO_OFF),
576 GPIO_GROUP(GPIOAO_2, AO_OFF),
577 GPIO_GROUP(GPIOAO_3, AO_OFF),
578 GPIO_GROUP(GPIOAO_4, AO_OFF),
579 GPIO_GROUP(GPIOAO_5, AO_OFF),
580 GPIO_GROUP(GPIOAO_6, AO_OFF),
581 GPIO_GROUP(GPIOAO_7, AO_OFF),
582 GPIO_GROUP(GPIOAO_8, AO_OFF),
583 GPIO_GROUP(GPIOAO_9, AO_OFF),
584 GPIO_GROUP(GPIOAO_10, AO_OFF),
585 GPIO_GROUP(GPIOAO_11, AO_OFF),
586 GPIO_GROUP(GPIOAO_12, AO_OFF),
587 GPIO_GROUP(GPIOAO_13, AO_OFF),
588 GPIO_GROUP(GPIO_BSD_EN, AO_OFF),
589 GPIO_GROUP(GPIO_TEST_N, AO_OFF),
590
575 /* bank AO */
576 GROUP(uart_tx_ao_a, 0, 12),
577 GROUP(uart_rx_ao_a, 0, 11),
578 GROUP(uart_cts_ao_a, 0, 10),
579 GROUP(uart_rts_ao_a, 0, 9),
580 GROUP(i2c_mst_sck_ao, 0, 6),
581 GROUP(i2c_mst_sda_ao, 0, 5),
582 GROUP(clk_32k_in_out, 0, 18),

--- 13 unchanged lines hidden (view full) ---

596 GROUP(uart_cts_ao_b, 0, 8),
597 GROUP(uart_rts_ao_b, 0, 7),
598 GROUP(uart_tx_ao_b1, 0, 24),
599 GROUP(uart_rx_ao_b1, 0, 23),
600 GROUP(spdif_out_1, 0, 16),
601 GROUP(i2s_in_ch01, 0, 13),
602 GROUP(i2s_ao_clk_in, 0, 15),
603 GROUP(i2s_lr_clk_in, 0, 14),
591 /* bank AO */
592 GROUP(uart_tx_ao_a, 0, 12),
593 GROUP(uart_rx_ao_a, 0, 11),
594 GROUP(uart_cts_ao_a, 0, 10),
595 GROUP(uart_rts_ao_a, 0, 9),
596 GROUP(i2c_mst_sck_ao, 0, 6),
597 GROUP(i2c_mst_sda_ao, 0, 5),
598 GROUP(clk_32k_in_out, 0, 18),

--- 13 unchanged lines hidden (view full) ---

612 GROUP(uart_cts_ao_b, 0, 8),
613 GROUP(uart_rts_ao_b, 0, 7),
614 GROUP(uart_tx_ao_b1, 0, 24),
615 GROUP(uart_rx_ao_b1, 0, 23),
616 GROUP(spdif_out_1, 0, 16),
617 GROUP(i2s_in_ch01, 0, 13),
618 GROUP(i2s_ao_clk_in, 0, 15),
619 GROUP(i2s_lr_clk_in, 0, 14),
604
605 /* bank DIF */
606 GROUP(eth_rxd1, 6, 0),
607 GROUP(eth_rxd0, 6, 1),
608 GROUP(eth_rx_dv, 6, 2),
609 GROUP(eth_rx_clk, 6, 3),
610 GROUP(eth_txd0_1, 6, 4),
611 GROUP(eth_txd1_1, 6, 5),
612 GROUP(eth_tx_en, 6, 0),
613 GROUP(eth_ref_clk, 6, 8),
614 GROUP(eth_mdc, 6, 9),
615 GROUP(eth_mdio_en, 6, 10),
616};
617
618static const char * const gpio_groups[] = {
619 "GPIOX_0", "GPIOX_1", "GPIOX_2", "GPIOX_3", "GPIOX_4",
620 "GPIOX_5", "GPIOX_6", "GPIOX_7", "GPIOX_8", "GPIOX_9",
621 "GPIOX_10", "GPIOX_11", "GPIOX_16", "GPIOX_17", "GPIOX_18",
622 "GPIOX_19", "GPIOX_20", "GPIOX_21",
623

--- 145 unchanged lines hidden (view full) ---

769 "uart_cts_ao_b", "uart_rts_ao_b"
770};
771
772static const char * const i2c_mst_ao_groups[] = {
773 "i2c_mst_sck_ao", "i2c_mst_sda_ao"
774};
775
776static const char * const clk_24m_groups[] = {
620};
621
622static const char * const gpio_groups[] = {
623 "GPIOX_0", "GPIOX_1", "GPIOX_2", "GPIOX_3", "GPIOX_4",
624 "GPIOX_5", "GPIOX_6", "GPIOX_7", "GPIOX_8", "GPIOX_9",
625 "GPIOX_10", "GPIOX_11", "GPIOX_16", "GPIOX_17", "GPIOX_18",
626 "GPIOX_19", "GPIOX_20", "GPIOX_21",
627

--- 145 unchanged lines hidden (view full) ---

773 "uart_cts_ao_b", "uart_rts_ao_b"
774};
775
776static const char * const i2c_mst_ao_groups[] = {
777 "i2c_mst_sck_ao", "i2c_mst_sda_ao"
778};
779
780static const char * const clk_24m_groups[] = {
777 "clk_24m_out",
781 "clk_24m_out"
778};
779
780static const char * const clk_32k_groups[] = {
782};
783
784static const char * const clk_32k_groups[] = {
781 "clk_32k_in_out",
785 "clk_32k_in_out"
782};
783
784static const char * const spdif_0_groups[] = {
785 "spdif_out_0"
786};
787
788static const char * const spdif_1_groups[] = {
789 "spdif_out_1"

--- 34 unchanged lines hidden (view full) ---

824 "tsin_d0_a", "tsin_d17_a", "tsin_clk_a", "tsin_sop_a",
825 "tsin_d_valid_a"
826};
827
828static const char * const tsin_b_groups[] = {
829 "tsin_d0_b", "tsin_clk_b", "tsin_sop_b", "tsin_d_valid_b"
830};
831
786};
787
788static const char * const spdif_0_groups[] = {
789 "spdif_out_0"
790};
791
792static const char * const spdif_1_groups[] = {
793 "spdif_out_1"

--- 34 unchanged lines hidden (view full) ---

828 "tsin_d0_a", "tsin_d17_a", "tsin_clk_a", "tsin_sop_a",
829 "tsin_d_valid_a"
830};
831
832static const char * const tsin_b_groups[] = {
833 "tsin_d0_b", "tsin_clk_b", "tsin_sop_b", "tsin_d_valid_b"
834};
835
832static struct meson_pmx_func meson8b_functions[] = {
836static struct meson_pmx_func meson8b_cbus_functions[] = {
833 FUNCTION(gpio),
834 FUNCTION(sd_a),
835 FUNCTION(sdxc_a),
836 FUNCTION(pcm_a),
837 FUNCTION(uart_a),
838 FUNCTION(uart_b),
839 FUNCTION(iso7816),
840 FUNCTION(i2c_d),
841 FUNCTION(xtal),
842 FUNCTION(uart_c),
843 FUNCTION(i2c_c),
844 FUNCTION(hdmi),
837 FUNCTION(gpio),
838 FUNCTION(sd_a),
839 FUNCTION(sdxc_a),
840 FUNCTION(pcm_a),
841 FUNCTION(uart_a),
842 FUNCTION(uart_b),
843 FUNCTION(iso7816),
844 FUNCTION(i2c_d),
845 FUNCTION(xtal),
846 FUNCTION(uart_c),
847 FUNCTION(i2c_c),
848 FUNCTION(hdmi),
845 FUNCTION(hdmi_cec),
846 FUNCTION(spi),
847 FUNCTION(ethernet),
848 FUNCTION(i2c_a),
849 FUNCTION(i2c_b),
850 FUNCTION(sd_c),
851 FUNCTION(sdxc_c),
852 FUNCTION(nand),
853 FUNCTION(nor),
854 FUNCTION(sd_b),
855 FUNCTION(sdxc_b),
849 FUNCTION(spi),
850 FUNCTION(ethernet),
851 FUNCTION(i2c_a),
852 FUNCTION(i2c_b),
853 FUNCTION(sd_c),
854 FUNCTION(sdxc_c),
855 FUNCTION(nand),
856 FUNCTION(nor),
857 FUNCTION(sd_b),
858 FUNCTION(sdxc_b),
856 FUNCTION(uart_ao),
857 FUNCTION(remote),
858 FUNCTION(i2c_slave_ao),
859 FUNCTION(uart_ao_b),
860 FUNCTION(i2c_mst_ao),
861 FUNCTION(clk_32k),
862 FUNCTION(spdif_0),
859 FUNCTION(spdif_0),
863 FUNCTION(spdif_1),
864 FUNCTION(i2s),
865 FUNCTION(pwm_b),
866 FUNCTION(pwm_c),
860 FUNCTION(pwm_b),
861 FUNCTION(pwm_c),
867 FUNCTION(pwm_c_ao),
868 FUNCTION(pwm_d),
869 FUNCTION(pwm_e),
870 FUNCTION(pwm_vs),
871 FUNCTION(tsin_a),
872 FUNCTION(tsin_b),
873 FUNCTION(clk_24m),
874};
875
862 FUNCTION(pwm_d),
863 FUNCTION(pwm_e),
864 FUNCTION(pwm_vs),
865 FUNCTION(tsin_a),
866 FUNCTION(tsin_b),
867 FUNCTION(clk_24m),
868};
869
876static struct meson_bank meson8b_banks[] = {
870static struct meson_pmx_func meson8b_aobus_functions[] = {
871 FUNCTION(uart_ao),
872 FUNCTION(uart_ao_b),
873 FUNCTION(i2c_slave_ao),
874 FUNCTION(i2c_mst_ao),
875 FUNCTION(i2s),
876 FUNCTION(remote),
877 FUNCTION(clk_32k),
878 FUNCTION(pwm_c_ao),
879 FUNCTION(spdif_1),
880 FUNCTION(hdmi_cec),
881};
882
883static struct meson_bank meson8b_cbus_banks[] = {
877 /* name first last pullen pull dir out in */
878 BANK("X", PIN(GPIOX_0, 0), PIN(GPIOX_21, 0), 4, 0, 4, 0, 0, 0, 1, 0, 2, 0),
879 BANK("Y", PIN(GPIOY_0, 0), PIN(GPIOY_14, 0), 3, 0, 3, 0, 3, 0, 4, 0, 5, 0),
880 BANK("DV", PIN(GPIODV_9, 0), PIN(GPIODV_29, 0), 0, 0, 0, 0, 7, 0, 8, 0, 9, 0),
881 BANK("H", PIN(GPIOH_0, 0), PIN(GPIOH_9, 0), 1, 16, 1, 16, 9, 19, 10, 19, 11, 19),
882 BANK("CARD", PIN(CARD_0, 0), PIN(CARD_6, 0), 2, 20, 2, 20, 0, 22, 1, 22, 2, 22),
883 BANK("BOOT", PIN(BOOT_0, 0), PIN(BOOT_18, 0), 2, 0, 2, 0, 9, 0, 10, 0, 11, 0),
884 BANK("DIF", PIN(DIF_0_P, 0), PIN(DIF_4_N, 0), 5, 8, 5, 8, 12, 12, 13, 12, 14, 12),
885};
886
884 /* name first last pullen pull dir out in */
885 BANK("X", PIN(GPIOX_0, 0), PIN(GPIOX_21, 0), 4, 0, 4, 0, 0, 0, 1, 0, 2, 0),
886 BANK("Y", PIN(GPIOY_0, 0), PIN(GPIOY_14, 0), 3, 0, 3, 0, 3, 0, 4, 0, 5, 0),
887 BANK("DV", PIN(GPIODV_9, 0), PIN(GPIODV_29, 0), 0, 0, 0, 0, 7, 0, 8, 0, 9, 0),
888 BANK("H", PIN(GPIOH_0, 0), PIN(GPIOH_9, 0), 1, 16, 1, 16, 9, 19, 10, 19, 11, 19),
889 BANK("CARD", PIN(CARD_0, 0), PIN(CARD_6, 0), 2, 20, 2, 20, 0, 22, 1, 22, 2, 22),
890 BANK("BOOT", PIN(BOOT_0, 0), PIN(BOOT_18, 0), 2, 0, 2, 0, 9, 0, 10, 0, 11, 0),
891 BANK("DIF", PIN(DIF_0_P, 0), PIN(DIF_4_N, 0), 5, 8, 5, 8, 12, 12, 13, 12, 14, 12),
892};
893
887static struct meson_bank meson8b_ao_banks[] = {
894static struct meson_bank meson8b_aobus_banks[] = {
888 /* name first last pullen pull dir out in */
889 BANK("AO", PIN(GPIOAO_0, AO_OFF), PIN(GPIO_TEST_N, AO_OFF), 0, 0, 0, 16, 0, 0, 0, 16, 1, 0),
890};
891
895 /* name first last pullen pull dir out in */
896 BANK("AO", PIN(GPIOAO_0, AO_OFF), PIN(GPIO_TEST_N, AO_OFF), 0, 0, 0, 16, 0, 0, 0, 16, 1, 0),
897};
898
892static struct meson_domain_data meson8b_domain_data[] = {
893 {
894 .name = "banks",
895 .banks = meson8b_banks,
896 .num_banks = ARRAY_SIZE(meson8b_banks),
897 .pin_base = 0,
898 .num_pins = 130,
899 },
900 {
901 .name = "ao-bank",
902 .banks = meson8b_ao_banks,
903 .num_banks = ARRAY_SIZE(meson8b_ao_banks),
904 .pin_base = 130,
905 .num_pins = 16,
906 },
899static struct meson_domain_data meson8b_cbus_domain_data = {
900 .name = "cbus-banks",
901 .banks = meson8b_cbus_banks,
902 .num_banks = ARRAY_SIZE(meson8b_cbus_banks),
903 .pin_base = 0,
904 .num_pins = 130,
907};
908
905};
906
909struct meson_pinctrl_data meson8b_pinctrl_data = {
910 .pins = meson8b_pins,
911 .groups = meson8b_groups,
912 .funcs = meson8b_functions,
913 .domain_data = meson8b_domain_data,
914 .num_pins = ARRAY_SIZE(meson8b_pins),
915 .num_groups = ARRAY_SIZE(meson8b_groups),
916 .num_funcs = ARRAY_SIZE(meson8b_functions),
917 .num_domains = ARRAY_SIZE(meson8b_domain_data),
907static struct meson_domain_data meson8b_aobus_domain_data = {
908 .name = "aobus-banks",
909 .banks = meson8b_aobus_banks,
910 .num_banks = ARRAY_SIZE(meson8b_aobus_banks),
911 .pin_base = 130,
912 .num_pins = 16,
918};
913};
914
915struct meson_pinctrl_data meson8b_cbus_pinctrl_data = {
916 .pins = meson8b_cbus_pins,
917 .groups = meson8b_cbus_groups,
918 .funcs = meson8b_cbus_functions,
919 .domain_data = &meson8b_cbus_domain_data,
920 .num_pins = ARRAY_SIZE(meson8b_cbus_pins),
921 .num_groups = ARRAY_SIZE(meson8b_cbus_groups),
922 .num_funcs = ARRAY_SIZE(meson8b_cbus_functions),
923};
924
925struct meson_pinctrl_data meson8b_aobus_pinctrl_data = {
926 .pins = meson8b_aobus_pins,
927 .groups = meson8b_aobus_groups,
928 .funcs = meson8b_aobus_functions,
929 .domain_data = &meson8b_aobus_domain_data,
930 .num_pins = ARRAY_SIZE(meson8b_aobus_pins),
931 .num_groups = ARRAY_SIZE(meson8b_aobus_groups),
932 .num_funcs = ARRAY_SIZE(meson8b_aobus_functions),
933};