summaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl/meson
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-06-07 16:56:45 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-06-07 16:56:45 -0400
commitedb2a385ec331fda7ecb5502d63e5e8be86b7a84 (patch)
tree329a2717306193d89052f460cff9db04c1fcee9b /drivers/pinctrl/meson
parent3a979e8c07e3ee9933016368db0a55943b00a089 (diff)
parent86c5dd6860a60e9b69558ecfce2c4769045d110c (diff)
Merge tag 'pinctrl-v4.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
Pull pin control updates from Linus Walleij: "This is the bulk of pin control changes for v4.18. No core changes this time! Just a calm all-over-the-place drivers, updates and fixes cycle as it seems. New drivers/subdrivers: - Actions Semiconductor S900 driver with more Actions variants for S700, S500 in the pipe. Also generic GPIO support on top of the same driver and IRQ support is in the pipe. - Renesas r8a77470 PFC support. - Renesas r8a77990 PFC support. - Allwinner Sunxi H6 R_PIO support. - Rockchip PX30 support. - Meson Meson8m2 support. - Remove support for the ill-fated Samsung Exynos 5440 SoC. Improvements: - Context save/restore support in pinctrl-single. - External interrupt support for the Mediatek MT7622. - Qualcomm ACPI HID QCOM8002 supported. Fixes: - Fix up suspend/resume support for Exynos 5433. - Fix Strago DMI fixes on the Intel Cherryview" * tag 'pinctrl-v4.18-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl: (72 commits) pinctrl: cherryview: limit Strago DMI workarounds to version 1.0 pinctrl: at91-pio4: add missing of_node_put pinctrl: armada-37xx: Fix spurious irq management gpiolib: discourage gpiochip_add_pin[group]_range for DT pinctrls pinctrl: msm: fix gpio-hog related boot issues MAINTAINERS: update entry for Mediatek pin controller pinctrl: mediatek: remove unused fields in struct mtk_eint_hw pinctrl: mediatek: use generic EINT register maps for each SoC pinctrl: mediatek: add EINT support to MT7622 SoC pinctrl: mediatek: refactor EINT related code for all MediaTek pinctrl can fit dt-bindings: pinctrl: add external interrupt support to MT7622 pinctrl pinctrl: freescale: Switch to SPDX identifier pinctrl: samsung: Fix suspend/resume for Exynos5433 GPF1..5 banks pinctrl: sh-pfc: rcar-gen3: Fix grammar in static pin comments pinctrl: sh-pfc: r8a77965: Add I2C pin support pinctrl: sh-pfc: r8a77990: Add EthernetAVB pins, groups and functions pinctrl: sh-pfc: r8a77990: Add I2C{1,2,4,5,6,7} pins, groups and functions pinctrl: sh-pfc: r8a77990: Add SCIF pins, groups and functions pinctrl: sh-pfc: r8a77990: Add bias pinconf support pinctrl: sh-pfc: Initial R8A77990 PFC support ...
Diffstat (limited to 'drivers/pinctrl/meson')
-rw-r--r--drivers/pinctrl/meson/pinctrl-meson-axg.c107
-rw-r--r--drivers/pinctrl/meson/pinctrl-meson-gxbb.c4
-rw-r--r--drivers/pinctrl/meson/pinctrl-meson-gxl.c4
-rw-r--r--drivers/pinctrl/meson/pinctrl-meson8.c23
4 files changed, 132 insertions, 6 deletions
diff --git a/drivers/pinctrl/meson/pinctrl-meson-axg.c b/drivers/pinctrl/meson/pinctrl-meson-axg.c
index 99a6ceac8e53..46a0918bd284 100644
--- a/drivers/pinctrl/meson/pinctrl-meson-axg.c
+++ b/drivers/pinctrl/meson/pinctrl-meson-axg.c
@@ -312,6 +312,47 @@ static const unsigned int pdm_din1_pins[] = {GPIOA_16};
312static const unsigned int pdm_din2_pins[] = {GPIOA_17}; 312static const unsigned int pdm_din2_pins[] = {GPIOA_17};
313static const unsigned int pdm_din3_pins[] = {GPIOA_18}; 313static const unsigned int pdm_din3_pins[] = {GPIOA_18};
314 314
315/* mclk */
316static const unsigned int mclk_c_pins[] = {GPIOA_0};
317static const unsigned int mclk_b_pins[] = {GPIOA_1};
318
319/* tdm */
320static const unsigned int tdma_sclk_pins[] = {GPIOX_12};
321static const unsigned int tdma_sclk_slv_pins[] = {GPIOX_12};
322static const unsigned int tdma_fs_pins[] = {GPIOX_13};
323static const unsigned int tdma_fs_slv_pins[] = {GPIOX_13};
324static const unsigned int tdma_din0_pins[] = {GPIOX_14};
325static const unsigned int tdma_dout0_x14_pins[] = {GPIOX_14};
326static const unsigned int tdma_dout0_x15_pins[] = {GPIOX_15};
327static const unsigned int tdma_dout1_pins[] = {GPIOX_15};
328static const unsigned int tdma_din1_pins[] = {GPIOX_15};
329
330static const unsigned int tdmc_sclk_pins[] = {GPIOA_2};
331static const unsigned int tdmc_sclk_slv_pins[] = {GPIOA_2};
332static const unsigned int tdmc_fs_pins[] = {GPIOA_3};
333static const unsigned int tdmc_fs_slv_pins[] = {GPIOA_3};
334static const unsigned int tdmc_din0_pins[] = {GPIOA_4};
335static const unsigned int tdmc_dout0_pins[] = {GPIOA_4};
336static const unsigned int tdmc_din1_pins[] = {GPIOA_5};
337static const unsigned int tdmc_dout1_pins[] = {GPIOA_5};
338static const unsigned int tdmc_din2_pins[] = {GPIOA_6};
339static const unsigned int tdmc_dout2_pins[] = {GPIOA_6};
340static const unsigned int tdmc_din3_pins[] = {GPIOA_7};
341static const unsigned int tdmc_dout3_pins[] = {GPIOA_7};
342
343static const unsigned int tdmb_sclk_pins[] = {GPIOA_8};
344static const unsigned int tdmb_sclk_slv_pins[] = {GPIOA_8};
345static const unsigned int tdmb_fs_pins[] = {GPIOA_9};
346static const unsigned int tdmb_fs_slv_pins[] = {GPIOA_9};
347static const unsigned int tdmb_din0_pins[] = {GPIOA_10};
348static const unsigned int tdmb_dout0_pins[] = {GPIOA_10};
349static const unsigned int tdmb_din1_pins[] = {GPIOA_11};
350static const unsigned int tdmb_dout1_pins[] = {GPIOA_11};
351static const unsigned int tdmb_din2_pins[] = {GPIOA_12};
352static const unsigned int tdmb_dout2_pins[] = {GPIOA_12};
353static const unsigned int tdmb_din3_pins[] = {GPIOA_13};
354static const unsigned int tdmb_dout3_pins[] = {GPIOA_13};
355
315static struct meson_pmx_group meson_axg_periphs_groups[] = { 356static struct meson_pmx_group meson_axg_periphs_groups[] = {
316 GPIO_GROUP(GPIOZ_0), 357 GPIO_GROUP(GPIOZ_0),
317 GPIO_GROUP(GPIOZ_1), 358 GPIO_GROUP(GPIOZ_1),
@@ -495,6 +536,15 @@ static struct meson_pmx_group meson_axg_periphs_groups[] = {
495 GROUP(eth_rx_dv_x, 4), 536 GROUP(eth_rx_dv_x, 4),
496 GROUP(eth_mdio_x, 4), 537 GROUP(eth_mdio_x, 4),
497 GROUP(eth_mdc_x, 4), 538 GROUP(eth_mdc_x, 4),
539 GROUP(tdma_sclk, 1),
540 GROUP(tdma_sclk_slv, 2),
541 GROUP(tdma_fs, 1),
542 GROUP(tdma_fs_slv, 2),
543 GROUP(tdma_din0, 1),
544 GROUP(tdma_dout0_x14, 2),
545 GROUP(tdma_dout0_x15, 1),
546 GROUP(tdma_dout1, 2),
547 GROUP(tdma_din1, 3),
498 548
499 /* bank GPIOY */ 549 /* bank GPIOY */
500 GROUP(eth_txd0_y, 1), 550 GROUP(eth_txd0_y, 1),
@@ -544,6 +594,32 @@ static struct meson_pmx_group meson_axg_periphs_groups[] = {
544 GROUP(pdm_din1, 1), 594 GROUP(pdm_din1, 1),
545 GROUP(pdm_din2, 1), 595 GROUP(pdm_din2, 1),
546 GROUP(pdm_din3, 1), 596 GROUP(pdm_din3, 1),
597 GROUP(mclk_c, 1),
598 GROUP(mclk_b, 1),
599 GROUP(tdmc_sclk, 1),
600 GROUP(tdmc_sclk_slv, 2),
601 GROUP(tdmc_fs, 1),
602 GROUP(tdmc_fs_slv, 2),
603 GROUP(tdmc_din0, 2),
604 GROUP(tdmc_dout0, 1),
605 GROUP(tdmc_din1, 2),
606 GROUP(tdmc_dout1, 1),
607 GROUP(tdmc_din2, 2),
608 GROUP(tdmc_dout2, 1),
609 GROUP(tdmc_din3, 2),
610 GROUP(tdmc_dout3, 1),
611 GROUP(tdmb_sclk, 1),
612 GROUP(tdmb_sclk_slv, 2),
613 GROUP(tdmb_fs, 1),
614 GROUP(tdmb_fs_slv, 2),
615 GROUP(tdmb_din0, 2),
616 GROUP(tdmb_dout0, 1),
617 GROUP(tdmb_din1, 2),
618 GROUP(tdmb_dout1, 1),
619 GROUP(tdmb_din2, 2),
620 GROUP(tdmb_dout2, 1),
621 GROUP(tdmb_din3, 2),
622 GROUP(tdmb_dout3, 1),
547}; 623};
548 624
549/* uart_ao_a */ 625/* uart_ao_a */
@@ -845,6 +921,32 @@ static const char * const jtag_ao_groups[] = {
845 "jtag_ao_tdi", "jtag_ao_tdo", "jtag_ao_clk", "jtag_ao_tms", 921 "jtag_ao_tdi", "jtag_ao_tdo", "jtag_ao_clk", "jtag_ao_tms",
846}; 922};
847 923
924static const char * const mclk_c_groups[] = {
925 "mclk_c",
926};
927
928static const char * const mclk_b_groups[] = {
929 "mclk_b",
930};
931
932static const char * const tdma_groups[] = {
933 "tdma_sclk", "tdma_sclk_slv", "tdma_fs", "tdma_fs_slv",
934 "tdma_din0", "tdma_dout0_x14", "tdma_dout0_x15", "tdma_dout1",
935 "tdma_din1",
936};
937
938static const char * const tdmc_groups[] = {
939 "tdmc_sclk", "tdmc_sclk_slv", "tdmc_fs", "tdmc_fs_slv",
940 "tdmc_din0", "tdmc_dout0", "tdmc_din1", "tdmc_dout1",
941 "tdmc_din2", "tdmc_dout2", "tdmc_din3", "tdmc_dout3",
942};
943
944static const char * const tdmb_groups[] = {
945 "tdmb_sclk", "tdmb_sclk_slv", "tdmb_fs", "tdmb_fs_slv",
946 "tdmb_din0", "tdmb_dout0", "tdmb_din1", "tdmb_dout1",
947 "tdmb_din2", "tdmb_dout2", "tdmb_din3", "tdmb_dout3",
948};
949
848static struct meson_pmx_func meson_axg_periphs_functions[] = { 950static struct meson_pmx_func meson_axg_periphs_functions[] = {
849 FUNCTION(gpio_periphs), 951 FUNCTION(gpio_periphs),
850 FUNCTION(emmc), 952 FUNCTION(emmc),
@@ -870,6 +972,11 @@ static struct meson_pmx_func meson_axg_periphs_functions[] = {
870 FUNCTION(spdif_in), 972 FUNCTION(spdif_in),
871 FUNCTION(jtag_ee), 973 FUNCTION(jtag_ee),
872 FUNCTION(pdm), 974 FUNCTION(pdm),
975 FUNCTION(mclk_b),
976 FUNCTION(mclk_c),
977 FUNCTION(tdma),
978 FUNCTION(tdmb),
979 FUNCTION(tdmc),
873}; 980};
874 981
875static struct meson_pmx_func meson_axg_aobus_functions[] = { 982static struct meson_pmx_func meson_axg_aobus_functions[] = {
diff --git a/drivers/pinctrl/meson/pinctrl-meson-gxbb.c b/drivers/pinctrl/meson/pinctrl-meson-gxbb.c
index 9079020259c5..2c97a2e07a5f 100644
--- a/drivers/pinctrl/meson/pinctrl-meson-gxbb.c
+++ b/drivers/pinctrl/meson/pinctrl-meson-gxbb.c
@@ -627,8 +627,8 @@ static const char * const sdio_groups[] = {
627}; 627};
628 628
629static const char * const nand_groups[] = { 629static const char * const nand_groups[] = {
630 "nand_ce0", "nand_ce1", "nand_rb0", "nand_ale", "nand_cle", 630 "emmc_nand_d07", "nand_ce0", "nand_ce1", "nand_rb0", "nand_ale",
631 "nand_wen_clk", "nand_ren_wr", "nand_dqs", 631 "nand_cle", "nand_wen_clk", "nand_ren_wr", "nand_dqs",
632}; 632};
633 633
634static const char * const uart_a_groups[] = { 634static const char * const uart_a_groups[] = {
diff --git a/drivers/pinctrl/meson/pinctrl-meson-gxl.c b/drivers/pinctrl/meson/pinctrl-meson-gxl.c
index b3786cde963d..7dae1d7bf6b0 100644
--- a/drivers/pinctrl/meson/pinctrl-meson-gxl.c
+++ b/drivers/pinctrl/meson/pinctrl-meson-gxl.c
@@ -617,8 +617,8 @@ static const char * const sdio_groups[] = {
617}; 617};
618 618
619static const char * const nand_groups[] = { 619static const char * const nand_groups[] = {
620 "nand_ce0", "nand_ce1", "nand_rb0", "nand_ale", "nand_cle", 620 "emmc_nand_d07", "nand_ce0", "nand_ce1", "nand_rb0", "nand_ale",
621 "nand_wen_clk", "nand_ren_wr", "nand_dqs", 621 "nand_cle", "nand_wen_clk", "nand_ren_wr", "nand_dqs",
622}; 622};
623 623
624static const char * const uart_a_groups[] = { 624static const char * const uart_a_groups[] = {
diff --git a/drivers/pinctrl/meson/pinctrl-meson8.c b/drivers/pinctrl/meson/pinctrl-meson8.c
index 49c7ce03547b..c6d79315218f 100644
--- a/drivers/pinctrl/meson/pinctrl-meson8.c
+++ b/drivers/pinctrl/meson/pinctrl-meson8.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * Pin controller and GPIO driver for Amlogic Meson8. 2 * Pin controller and GPIO driver for Amlogic Meson8 and Meson8m2.
3 * 3 *
4 * Copyright (C) 2014 Beniamino Galvani <b.galvani@gmail.com> 4 * Copyright (C) 2014 Beniamino Galvani <b.galvani@gmail.com>
5 * 5 *
@@ -299,6 +299,10 @@ static const unsigned int spi_mosi_1_pins[] = { GPIOZ_12 };
299static const unsigned int spi_miso_1_pins[] = { GPIOZ_13 }; 299static const unsigned int spi_miso_1_pins[] = { GPIOZ_13 };
300static const unsigned int spi_ss2_1_pins[] = { GPIOZ_14 }; 300static const unsigned int spi_ss2_1_pins[] = { GPIOZ_14 };
301 301
302static const unsigned int eth_txd3_pins[] = { GPIOZ_0 };
303static const unsigned int eth_txd2_pins[] = { GPIOZ_1 };
304static const unsigned int eth_rxd3_pins[] = { GPIOZ_2 };
305static const unsigned int eth_rxd2_pins[] = { GPIOZ_3 };
302static const unsigned int eth_tx_clk_50m_pins[] = { GPIOZ_4 }; 306static const unsigned int eth_tx_clk_50m_pins[] = { GPIOZ_4 };
303static const unsigned int eth_tx_en_pins[] = { GPIOZ_5 }; 307static const unsigned int eth_tx_en_pins[] = { GPIOZ_5 };
304static const unsigned int eth_txd1_pins[] = { GPIOZ_6 }; 308static const unsigned int eth_txd1_pins[] = { GPIOZ_6 };
@@ -650,6 +654,12 @@ static struct meson_pmx_group meson8_cbus_groups[] = {
650 GROUP(eth_mdio, 6, 6), 654 GROUP(eth_mdio, 6, 6),
651 GROUP(eth_mdc, 6, 5), 655 GROUP(eth_mdc, 6, 5),
652 656
657 /* NOTE: the following four groups are only available on Meson8m2: */
658 GROUP(eth_rxd2, 6, 3),
659 GROUP(eth_rxd3, 6, 2),
660 GROUP(eth_txd2, 6, 1),
661 GROUP(eth_txd3, 6, 0),
662
653 GROUP(i2c_sda_a0, 5, 31), 663 GROUP(i2c_sda_a0, 5, 31),
654 GROUP(i2c_sck_a0, 5, 30), 664 GROUP(i2c_sck_a0, 5, 30),
655 665
@@ -877,7 +887,8 @@ static const char * const spi_groups[] = {
877static const char * const ethernet_groups[] = { 887static const char * const ethernet_groups[] = {
878 "eth_tx_clk_50m", "eth_tx_en", "eth_txd1", 888 "eth_tx_clk_50m", "eth_tx_en", "eth_txd1",
879 "eth_txd0", "eth_rx_clk_in", "eth_rx_dv", 889 "eth_txd0", "eth_rx_clk_in", "eth_rx_dv",
880 "eth_rxd1", "eth_rxd0", "eth_mdio", "eth_mdc" 890 "eth_rxd1", "eth_rxd0", "eth_mdio", "eth_mdc", "eth_rxd2",
891 "eth_rxd3", "eth_txd2", "eth_txd3"
881}; 892};
882 893
883static const char * const i2c_a_groups[] = { 894static const char * const i2c_a_groups[] = {
@@ -1080,6 +1091,14 @@ static const struct of_device_id meson8_pinctrl_dt_match[] = {
1080 .compatible = "amlogic,meson8-aobus-pinctrl", 1091 .compatible = "amlogic,meson8-aobus-pinctrl",
1081 .data = &meson8_aobus_pinctrl_data, 1092 .data = &meson8_aobus_pinctrl_data,
1082 }, 1093 },
1094 {
1095 .compatible = "amlogic,meson8m2-cbus-pinctrl",
1096 .data = &meson8_cbus_pinctrl_data,
1097 },
1098 {
1099 .compatible = "amlogic,meson8m2-aobus-pinctrl",
1100 .data = &meson8_aobus_pinctrl_data,
1101 },
1083 { }, 1102 { },
1084}; 1103};
1085 1104