aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl
diff options
context:
space:
mode:
authorMaxime Ripard <maxime.ripard@free-electrons.com>2013-06-08 06:05:45 -0400
committerLinus Walleij <linus.walleij@linaro.org>2013-06-16 05:57:32 -0400
commit7f884b648307a06917d5da33e57c57ba4b0d6542 (patch)
tree2a150b594f05dd236ce02da30bd87b541e54b733 /drivers/pinctrl
parent60242db1a7292cc63ae390f12ec9d62e9e2f6935 (diff)
pinctrl: sunxi: Add external interrupt functions
The A10 and A13 has a few pins that can be muxed into a particular function that can be used as an interrupt source. Add the available pins for such functions to the A10 and A13 description array. Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl')
-rw-r--r--drivers/pinctrl/pinctrl-sunxi.c99
1 files changed, 73 insertions, 26 deletions
diff --git a/drivers/pinctrl/pinctrl-sunxi.c b/drivers/pinctrl/pinctrl-sunxi.c
index e2bab0f75fc5..28d33f491bf1 100644
--- a/drivers/pinctrl/pinctrl-sunxi.c
+++ b/drivers/pinctrl/pinctrl-sunxi.c
@@ -675,6 +675,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
675 SUNXI_FUNCTION(0x2, "lcd1"), /* D0 */ 675 SUNXI_FUNCTION(0x2, "lcd1"), /* D0 */
676 SUNXI_FUNCTION(0x3, "pata"), /* ATAA0 */ 676 SUNXI_FUNCTION(0x3, "pata"), /* ATAA0 */
677 SUNXI_FUNCTION(0x4, "uart3"), /* TX */ 677 SUNXI_FUNCTION(0x4, "uart3"), /* TX */
678 SUNXI_FUNCTION_IRQ(0x6, 0), /* EINT0 */
678 SUNXI_FUNCTION(0x7, "csi1")), /* D0 */ 679 SUNXI_FUNCTION(0x7, "csi1")), /* D0 */
679 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH1, 680 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH1,
680 SUNXI_FUNCTION(0x0, "gpio_in"), 681 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -682,6 +683,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
682 SUNXI_FUNCTION(0x2, "lcd1"), /* D1 */ 683 SUNXI_FUNCTION(0x2, "lcd1"), /* D1 */
683 SUNXI_FUNCTION(0x3, "pata"), /* ATAA1 */ 684 SUNXI_FUNCTION(0x3, "pata"), /* ATAA1 */
684 SUNXI_FUNCTION(0x4, "uart3"), /* RX */ 685 SUNXI_FUNCTION(0x4, "uart3"), /* RX */
686 SUNXI_FUNCTION_IRQ(0x6, 1), /* EINT1 */
685 SUNXI_FUNCTION(0x7, "csi1")), /* D1 */ 687 SUNXI_FUNCTION(0x7, "csi1")), /* D1 */
686 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH2, 688 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH2,
687 SUNXI_FUNCTION(0x0, "gpio_in"), 689 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -689,6 +691,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
689 SUNXI_FUNCTION(0x2, "lcd1"), /* D2 */ 691 SUNXI_FUNCTION(0x2, "lcd1"), /* D2 */
690 SUNXI_FUNCTION(0x3, "pata"), /* ATAA2 */ 692 SUNXI_FUNCTION(0x3, "pata"), /* ATAA2 */
691 SUNXI_FUNCTION(0x4, "uart3"), /* RTS */ 693 SUNXI_FUNCTION(0x4, "uart3"), /* RTS */
694 SUNXI_FUNCTION_IRQ(0x6, 2), /* EINT2 */
692 SUNXI_FUNCTION(0x7, "csi1")), /* D2 */ 695 SUNXI_FUNCTION(0x7, "csi1")), /* D2 */
693 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH3, 696 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH3,
694 SUNXI_FUNCTION(0x0, "gpio_in"), 697 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -696,6 +699,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
696 SUNXI_FUNCTION(0x2, "lcd1"), /* D3 */ 699 SUNXI_FUNCTION(0x2, "lcd1"), /* D3 */
697 SUNXI_FUNCTION(0x3, "pata"), /* ATAIRQ */ 700 SUNXI_FUNCTION(0x3, "pata"), /* ATAIRQ */
698 SUNXI_FUNCTION(0x4, "uart3"), /* CTS */ 701 SUNXI_FUNCTION(0x4, "uart3"), /* CTS */
702 SUNXI_FUNCTION_IRQ(0x6, 3), /* EINT3 */
699 SUNXI_FUNCTION(0x7, "csi1")), /* D3 */ 703 SUNXI_FUNCTION(0x7, "csi1")), /* D3 */
700 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH4, 704 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH4,
701 SUNXI_FUNCTION(0x0, "gpio_in"), 705 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -703,6 +707,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
703 SUNXI_FUNCTION(0x2, "lcd1"), /* D4 */ 707 SUNXI_FUNCTION(0x2, "lcd1"), /* D4 */
704 SUNXI_FUNCTION(0x3, "pata"), /* ATAD0 */ 708 SUNXI_FUNCTION(0x3, "pata"), /* ATAD0 */
705 SUNXI_FUNCTION(0x4, "uart4"), /* TX */ 709 SUNXI_FUNCTION(0x4, "uart4"), /* TX */
710 SUNXI_FUNCTION_IRQ(0x6, 4), /* EINT4 */
706 SUNXI_FUNCTION(0x7, "csi1")), /* D4 */ 711 SUNXI_FUNCTION(0x7, "csi1")), /* D4 */
707 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH5, 712 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH5,
708 SUNXI_FUNCTION(0x0, "gpio_in"), 713 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -710,6 +715,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
710 SUNXI_FUNCTION(0x2, "lcd1"), /* D5 */ 715 SUNXI_FUNCTION(0x2, "lcd1"), /* D5 */
711 SUNXI_FUNCTION(0x3, "pata"), /* ATAD1 */ 716 SUNXI_FUNCTION(0x3, "pata"), /* ATAD1 */
712 SUNXI_FUNCTION(0x4, "uart4"), /* RX */ 717 SUNXI_FUNCTION(0x4, "uart4"), /* RX */
718 SUNXI_FUNCTION_IRQ(0x6, 5), /* EINT5 */
713 SUNXI_FUNCTION(0x7, "csi1")), /* D5 */ 719 SUNXI_FUNCTION(0x7, "csi1")), /* D5 */
714 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH6, 720 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH6,
715 SUNXI_FUNCTION(0x0, "gpio_in"), 721 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -718,6 +724,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
718 SUNXI_FUNCTION(0x3, "pata"), /* ATAD2 */ 724 SUNXI_FUNCTION(0x3, "pata"), /* ATAD2 */
719 SUNXI_FUNCTION(0x4, "uart5"), /* TX */ 725 SUNXI_FUNCTION(0x4, "uart5"), /* TX */
720 SUNXI_FUNCTION(0x5, "ms"), /* BS */ 726 SUNXI_FUNCTION(0x5, "ms"), /* BS */
727 SUNXI_FUNCTION_IRQ(0x6, 6), /* EINT6 */
721 SUNXI_FUNCTION(0x7, "csi1")), /* D6 */ 728 SUNXI_FUNCTION(0x7, "csi1")), /* D6 */
722 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH7, 729 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH7,
723 SUNXI_FUNCTION(0x0, "gpio_in"), 730 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -726,6 +733,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
726 SUNXI_FUNCTION(0x3, "pata"), /* ATAD3 */ 733 SUNXI_FUNCTION(0x3, "pata"), /* ATAD3 */
727 SUNXI_FUNCTION(0x4, "uart5"), /* RX */ 734 SUNXI_FUNCTION(0x4, "uart5"), /* RX */
728 SUNXI_FUNCTION(0x5, "ms"), /* CLK */ 735 SUNXI_FUNCTION(0x5, "ms"), /* CLK */
736 SUNXI_FUNCTION_IRQ(0x6, 7), /* EINT7 */
729 SUNXI_FUNCTION(0x7, "csi1")), /* D7 */ 737 SUNXI_FUNCTION(0x7, "csi1")), /* D7 */
730 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH8, 738 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH8,
731 SUNXI_FUNCTION(0x0, "gpio_in"), 739 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -734,6 +742,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
734 SUNXI_FUNCTION(0x3, "pata"), /* ATAD4 */ 742 SUNXI_FUNCTION(0x3, "pata"), /* ATAD4 */
735 SUNXI_FUNCTION(0x4, "keypad"), /* IN0 */ 743 SUNXI_FUNCTION(0x4, "keypad"), /* IN0 */
736 SUNXI_FUNCTION(0x5, "ms"), /* D0 */ 744 SUNXI_FUNCTION(0x5, "ms"), /* D0 */
745 SUNXI_FUNCTION_IRQ(0x6, 8), /* EINT8 */
737 SUNXI_FUNCTION(0x7, "csi1")), /* D8 */ 746 SUNXI_FUNCTION(0x7, "csi1")), /* D8 */
738 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH9, 747 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH9,
739 SUNXI_FUNCTION(0x0, "gpio_in"), 748 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -742,6 +751,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
742 SUNXI_FUNCTION(0x3, "pata"), /* ATAD5 */ 751 SUNXI_FUNCTION(0x3, "pata"), /* ATAD5 */
743 SUNXI_FUNCTION(0x4, "keypad"), /* IN1 */ 752 SUNXI_FUNCTION(0x4, "keypad"), /* IN1 */
744 SUNXI_FUNCTION(0x5, "ms"), /* D1 */ 753 SUNXI_FUNCTION(0x5, "ms"), /* D1 */
754 SUNXI_FUNCTION_IRQ(0x6, 9), /* EINT9 */
745 SUNXI_FUNCTION(0x7, "csi1")), /* D9 */ 755 SUNXI_FUNCTION(0x7, "csi1")), /* D9 */
746 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH10, 756 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH10,
747 SUNXI_FUNCTION(0x0, "gpio_in"), 757 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -750,6 +760,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
750 SUNXI_FUNCTION(0x3, "pata"), /* ATAD6 */ 760 SUNXI_FUNCTION(0x3, "pata"), /* ATAD6 */
751 SUNXI_FUNCTION(0x4, "keypad"), /* IN2 */ 761 SUNXI_FUNCTION(0x4, "keypad"), /* IN2 */
752 SUNXI_FUNCTION(0x5, "ms"), /* D2 */ 762 SUNXI_FUNCTION(0x5, "ms"), /* D2 */
763 SUNXI_FUNCTION_IRQ(0x6, 10), /* EINT10 */
753 SUNXI_FUNCTION(0x7, "csi1")), /* D10 */ 764 SUNXI_FUNCTION(0x7, "csi1")), /* D10 */
754 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH11, 765 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH11,
755 SUNXI_FUNCTION(0x0, "gpio_in"), 766 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -758,6 +769,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
758 SUNXI_FUNCTION(0x3, "pata"), /* ATAD7 */ 769 SUNXI_FUNCTION(0x3, "pata"), /* ATAD7 */
759 SUNXI_FUNCTION(0x4, "keypad"), /* IN3 */ 770 SUNXI_FUNCTION(0x4, "keypad"), /* IN3 */
760 SUNXI_FUNCTION(0x5, "ms"), /* D3 */ 771 SUNXI_FUNCTION(0x5, "ms"), /* D3 */
772 SUNXI_FUNCTION_IRQ(0x6, 11), /* EINT11 */
761 SUNXI_FUNCTION(0x7, "csi1")), /* D11 */ 773 SUNXI_FUNCTION(0x7, "csi1")), /* D11 */
762 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH12, 774 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH12,
763 SUNXI_FUNCTION(0x0, "gpio_in"), 775 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -765,6 +777,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
765 SUNXI_FUNCTION(0x2, "lcd1"), /* D12 */ 777 SUNXI_FUNCTION(0x2, "lcd1"), /* D12 */
766 SUNXI_FUNCTION(0x3, "pata"), /* ATAD8 */ 778 SUNXI_FUNCTION(0x3, "pata"), /* ATAD8 */
767 SUNXI_FUNCTION(0x4, "ps2"), /* SCK1 */ 779 SUNXI_FUNCTION(0x4, "ps2"), /* SCK1 */
780 SUNXI_FUNCTION_IRQ(0x6, 12), /* EINT12 */
768 SUNXI_FUNCTION(0x7, "csi1")), /* D12 */ 781 SUNXI_FUNCTION(0x7, "csi1")), /* D12 */
769 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH13, 782 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH13,
770 SUNXI_FUNCTION(0x0, "gpio_in"), 783 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -773,6 +786,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
773 SUNXI_FUNCTION(0x3, "pata"), /* ATAD9 */ 786 SUNXI_FUNCTION(0x3, "pata"), /* ATAD9 */
774 SUNXI_FUNCTION(0x4, "ps2"), /* SDA1 */ 787 SUNXI_FUNCTION(0x4, "ps2"), /* SDA1 */
775 SUNXI_FUNCTION(0x5, "sim"), /* RST */ 788 SUNXI_FUNCTION(0x5, "sim"), /* RST */
789 SUNXI_FUNCTION_IRQ(0x6, 13), /* EINT13 */
776 SUNXI_FUNCTION(0x7, "csi1")), /* D13 */ 790 SUNXI_FUNCTION(0x7, "csi1")), /* D13 */
777 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH14, 791 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH14,
778 SUNXI_FUNCTION(0x0, "gpio_in"), 792 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -781,6 +795,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
781 SUNXI_FUNCTION(0x3, "pata"), /* ATAD10 */ 795 SUNXI_FUNCTION(0x3, "pata"), /* ATAD10 */
782 SUNXI_FUNCTION(0x4, "keypad"), /* IN4 */ 796 SUNXI_FUNCTION(0x4, "keypad"), /* IN4 */
783 SUNXI_FUNCTION(0x5, "sim"), /* VPPEN */ 797 SUNXI_FUNCTION(0x5, "sim"), /* VPPEN */
798 SUNXI_FUNCTION_IRQ(0x6, 14), /* EINT14 */
784 SUNXI_FUNCTION(0x7, "csi1")), /* D14 */ 799 SUNXI_FUNCTION(0x7, "csi1")), /* D14 */
785 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH15, 800 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH15,
786 SUNXI_FUNCTION(0x0, "gpio_in"), 801 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -789,6 +804,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
789 SUNXI_FUNCTION(0x3, "pata"), /* ATAD11 */ 804 SUNXI_FUNCTION(0x3, "pata"), /* ATAD11 */
790 SUNXI_FUNCTION(0x4, "keypad"), /* IN5 */ 805 SUNXI_FUNCTION(0x4, "keypad"), /* IN5 */
791 SUNXI_FUNCTION(0x5, "sim"), /* VPPPP */ 806 SUNXI_FUNCTION(0x5, "sim"), /* VPPPP */
807 SUNXI_FUNCTION_IRQ(0x6, 15), /* EINT15 */
792 SUNXI_FUNCTION(0x7, "csi1")), /* D15 */ 808 SUNXI_FUNCTION(0x7, "csi1")), /* D15 */
793 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH16, 809 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH16,
794 SUNXI_FUNCTION(0x0, "gpio_in"), 810 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -796,6 +812,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
796 SUNXI_FUNCTION(0x2, "lcd1"), /* D16 */ 812 SUNXI_FUNCTION(0x2, "lcd1"), /* D16 */
797 SUNXI_FUNCTION(0x3, "pata"), /* ATAD12 */ 813 SUNXI_FUNCTION(0x3, "pata"), /* ATAD12 */
798 SUNXI_FUNCTION(0x4, "keypad"), /* IN6 */ 814 SUNXI_FUNCTION(0x4, "keypad"), /* IN6 */
815 SUNXI_FUNCTION_IRQ(0x6, 16), /* EINT16 */
799 SUNXI_FUNCTION(0x7, "csi1")), /* D16 */ 816 SUNXI_FUNCTION(0x7, "csi1")), /* D16 */
800 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH17, 817 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH17,
801 SUNXI_FUNCTION(0x0, "gpio_in"), 818 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -804,6 +821,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
804 SUNXI_FUNCTION(0x3, "pata"), /* ATAD13 */ 821 SUNXI_FUNCTION(0x3, "pata"), /* ATAD13 */
805 SUNXI_FUNCTION(0x4, "keypad"), /* IN7 */ 822 SUNXI_FUNCTION(0x4, "keypad"), /* IN7 */
806 SUNXI_FUNCTION(0x5, "sim"), /* VCCEN */ 823 SUNXI_FUNCTION(0x5, "sim"), /* VCCEN */
824 SUNXI_FUNCTION_IRQ(0x6, 17), /* EINT17 */
807 SUNXI_FUNCTION(0x7, "csi1")), /* D17 */ 825 SUNXI_FUNCTION(0x7, "csi1")), /* D17 */
808 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH18, 826 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH18,
809 SUNXI_FUNCTION(0x0, "gpio_in"), 827 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -812,6 +830,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
812 SUNXI_FUNCTION(0x3, "pata"), /* ATAD14 */ 830 SUNXI_FUNCTION(0x3, "pata"), /* ATAD14 */
813 SUNXI_FUNCTION(0x4, "keypad"), /* OUT0 */ 831 SUNXI_FUNCTION(0x4, "keypad"), /* OUT0 */
814 SUNXI_FUNCTION(0x5, "sim"), /* SCK */ 832 SUNXI_FUNCTION(0x5, "sim"), /* SCK */
833 SUNXI_FUNCTION_IRQ(0x6, 18), /* EINT18 */
815 SUNXI_FUNCTION(0x7, "csi1")), /* D18 */ 834 SUNXI_FUNCTION(0x7, "csi1")), /* D18 */
816 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH19, 835 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH19,
817 SUNXI_FUNCTION(0x0, "gpio_in"), 836 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -820,6 +839,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
820 SUNXI_FUNCTION(0x3, "pata"), /* ATAD15 */ 839 SUNXI_FUNCTION(0x3, "pata"), /* ATAD15 */
821 SUNXI_FUNCTION(0x4, "keypad"), /* OUT1 */ 840 SUNXI_FUNCTION(0x4, "keypad"), /* OUT1 */
822 SUNXI_FUNCTION(0x5, "sim"), /* SDA */ 841 SUNXI_FUNCTION(0x5, "sim"), /* SDA */
842 SUNXI_FUNCTION_IRQ(0x6, 19), /* EINT19 */
823 SUNXI_FUNCTION(0x7, "csi1")), /* D19 */ 843 SUNXI_FUNCTION(0x7, "csi1")), /* D19 */
824 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH20, 844 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH20,
825 SUNXI_FUNCTION(0x0, "gpio_in"), 845 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -827,6 +847,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
827 SUNXI_FUNCTION(0x2, "lcd1"), /* D20 */ 847 SUNXI_FUNCTION(0x2, "lcd1"), /* D20 */
828 SUNXI_FUNCTION(0x3, "pata"), /* ATAOE */ 848 SUNXI_FUNCTION(0x3, "pata"), /* ATAOE */
829 SUNXI_FUNCTION(0x4, "can"), /* TX */ 849 SUNXI_FUNCTION(0x4, "can"), /* TX */
850 SUNXI_FUNCTION_IRQ(0x6, 20), /* EINT20 */
830 SUNXI_FUNCTION(0x7, "csi1")), /* D20 */ 851 SUNXI_FUNCTION(0x7, "csi1")), /* D20 */
831 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH21, 852 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH21,
832 SUNXI_FUNCTION(0x0, "gpio_in"), 853 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -834,6 +855,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
834 SUNXI_FUNCTION(0x2, "lcd1"), /* D21 */ 855 SUNXI_FUNCTION(0x2, "lcd1"), /* D21 */
835 SUNXI_FUNCTION(0x3, "pata"), /* ATADREQ */ 856 SUNXI_FUNCTION(0x3, "pata"), /* ATADREQ */
836 SUNXI_FUNCTION(0x4, "can"), /* RX */ 857 SUNXI_FUNCTION(0x4, "can"), /* RX */
858 SUNXI_FUNCTION_IRQ(0x6, 21), /* EINT21 */
837 SUNXI_FUNCTION(0x7, "csi1")), /* D21 */ 859 SUNXI_FUNCTION(0x7, "csi1")), /* D21 */
838 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH22, 860 SUNXI_PIN(SUNXI_PINCTRL_PIN_PH22,
839 SUNXI_FUNCTION(0x0, "gpio_in"), 861 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -925,54 +947,64 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
925 SUNXI_FUNCTION(0x0, "gpio_in"), 947 SUNXI_FUNCTION(0x0, "gpio_in"),
926 SUNXI_FUNCTION(0x1, "gpio_out"), 948 SUNXI_FUNCTION(0x1, "gpio_out"),
927 SUNXI_FUNCTION(0x2, "spi0"), /* CS0 */ 949 SUNXI_FUNCTION(0x2, "spi0"), /* CS0 */
928 SUNXI_FUNCTION(0x3, "uart5")), /* TX */ 950 SUNXI_FUNCTION(0x3, "uart5"), /* TX */
951 SUNXI_FUNCTION_IRQ(0x6, 22)), /* EINT22 */
929 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI11, 952 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI11,
930 SUNXI_FUNCTION(0x0, "gpio_in"), 953 SUNXI_FUNCTION(0x0, "gpio_in"),
931 SUNXI_FUNCTION(0x1, "gpio_out"), 954 SUNXI_FUNCTION(0x1, "gpio_out"),
932 SUNXI_FUNCTION(0x2, "spi0"), /* CLK */ 955 SUNXI_FUNCTION(0x2, "spi0"), /* CLK */
933 SUNXI_FUNCTION(0x3, "uart5")), /* RX */ 956 SUNXI_FUNCTION(0x3, "uart5"), /* RX */
957 SUNXI_FUNCTION_IRQ(0x6, 23)), /* EINT23 */
934 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI12, 958 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI12,
935 SUNXI_FUNCTION(0x0, "gpio_in"), 959 SUNXI_FUNCTION(0x0, "gpio_in"),
936 SUNXI_FUNCTION(0x1, "gpio_out"), 960 SUNXI_FUNCTION(0x1, "gpio_out"),
937 SUNXI_FUNCTION(0x2, "spi0"), /* MOSI */ 961 SUNXI_FUNCTION(0x2, "spi0"), /* MOSI */
938 SUNXI_FUNCTION(0x3, "uart6")), /* TX */ 962 SUNXI_FUNCTION(0x3, "uart6"), /* TX */
963 SUNXI_FUNCTION_IRQ(0x6, 24)), /* EINT24 */
939 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI13, 964 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI13,
940 SUNXI_FUNCTION(0x0, "gpio_in"), 965 SUNXI_FUNCTION(0x0, "gpio_in"),
941 SUNXI_FUNCTION(0x1, "gpio_out"), 966 SUNXI_FUNCTION(0x1, "gpio_out"),
942 SUNXI_FUNCTION(0x2, "spi0"), /* MISO */ 967 SUNXI_FUNCTION(0x2, "spi0"), /* MISO */
943 SUNXI_FUNCTION(0x3, "uart6")), /* RX */ 968 SUNXI_FUNCTION(0x3, "uart6"), /* RX */
969 SUNXI_FUNCTION_IRQ(0x6, 25)), /* EINT25 */
944 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI14, 970 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI14,
945 SUNXI_FUNCTION(0x0, "gpio_in"), 971 SUNXI_FUNCTION(0x0, "gpio_in"),
946 SUNXI_FUNCTION(0x1, "gpio_out"), 972 SUNXI_FUNCTION(0x1, "gpio_out"),
947 SUNXI_FUNCTION(0x2, "spi0"), /* CS1 */ 973 SUNXI_FUNCTION(0x2, "spi0"), /* CS1 */
948 SUNXI_FUNCTION(0x3, "ps2"), /* SCK1 */ 974 SUNXI_FUNCTION(0x3, "ps2"), /* SCK1 */
949 SUNXI_FUNCTION(0x4, "timer4")), /* TCLKIN0 */ 975 SUNXI_FUNCTION(0x4, "timer4"), /* TCLKIN0 */
976 SUNXI_FUNCTION_IRQ(0x6, 26)), /* EINT26 */
950 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI15, 977 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI15,
951 SUNXI_FUNCTION(0x0, "gpio_in"), 978 SUNXI_FUNCTION(0x0, "gpio_in"),
952 SUNXI_FUNCTION(0x1, "gpio_out"), 979 SUNXI_FUNCTION(0x1, "gpio_out"),
953 SUNXI_FUNCTION(0x2, "spi1"), /* CS1 */ 980 SUNXI_FUNCTION(0x2, "spi1"), /* CS1 */
954 SUNXI_FUNCTION(0x3, "ps2"), /* SDA1 */ 981 SUNXI_FUNCTION(0x3, "ps2"), /* SDA1 */
955 SUNXI_FUNCTION(0x4, "timer5")), /* TCLKIN1 */ 982 SUNXI_FUNCTION(0x4, "timer5"), /* TCLKIN1 */
983 SUNXI_FUNCTION_IRQ(0x6, 27)), /* EINT27 */
956 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI16, 984 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI16,
957 SUNXI_FUNCTION(0x0, "gpio_in"), 985 SUNXI_FUNCTION(0x0, "gpio_in"),
958 SUNXI_FUNCTION(0x1, "gpio_out"), 986 SUNXI_FUNCTION(0x1, "gpio_out"),
959 SUNXI_FUNCTION(0x2, "spi1"), /* CS0 */ 987 SUNXI_FUNCTION(0x2, "spi1"), /* CS0 */
960 SUNXI_FUNCTION(0x3, "uart2")), /* RTS */ 988 SUNXI_FUNCTION(0x3, "uart2"), /* RTS */
989 SUNXI_FUNCTION_IRQ(0x6, 28)), /* EINT28 */
961 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI17, 990 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI17,
962 SUNXI_FUNCTION(0x0, "gpio_in"), 991 SUNXI_FUNCTION(0x0, "gpio_in"),
963 SUNXI_FUNCTION(0x1, "gpio_out"), 992 SUNXI_FUNCTION(0x1, "gpio_out"),
964 SUNXI_FUNCTION(0x2, "spi1"), /* CLK */ 993 SUNXI_FUNCTION(0x2, "spi1"), /* CLK */
965 SUNXI_FUNCTION(0x3, "uart2")), /* CTS */ 994 SUNXI_FUNCTION(0x3, "uart2"), /* CTS */
995 SUNXI_FUNCTION_IRQ(0x6, 29)), /* EINT29 */
966 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI18, 996 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI18,
967 SUNXI_FUNCTION(0x0, "gpio_in"), 997 SUNXI_FUNCTION(0x0, "gpio_in"),
968 SUNXI_FUNCTION(0x1, "gpio_out"), 998 SUNXI_FUNCTION(0x1, "gpio_out"),
969 SUNXI_FUNCTION(0x2, "spi1"), /* MOSI */ 999 SUNXI_FUNCTION(0x2, "spi1"), /* MOSI */
970 SUNXI_FUNCTION(0x3, "uart2")), /* TX */ 1000 SUNXI_FUNCTION(0x3, "uart2"), /* TX */
1001 SUNXI_FUNCTION_IRQ(0x6, 30)), /* EINT30 */
971 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI19, 1002 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI19,
972 SUNXI_FUNCTION(0x0, "gpio_in"), 1003 SUNXI_FUNCTION(0x0, "gpio_in"),
973 SUNXI_FUNCTION(0x1, "gpio_out"), 1004 SUNXI_FUNCTION(0x1, "gpio_out"),
974 SUNXI_FUNCTION(0x2, "spi1"), /* MISO */ 1005 SUNXI_FUNCTION(0x2, "spi1"), /* MISO */
975 SUNXI_FUNCTION(0x3, "uart2")), /* RX */ 1006 SUNXI_FUNCTION(0x3, "uart2"), /* RX */
1007 SUNXI_FUNCTION_IRQ(0x6, 31)), /* EINT31 */
976 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI20, 1008 SUNXI_PIN(SUNXI_PINCTRL_PIN_PI20,
977 SUNXI_FUNCTION(0x0, "gpio_in"), 1009 SUNXI_FUNCTION(0x0, "gpio_in"),
978 SUNXI_FUNCTION(0x1, "gpio_out"), 1010 SUNXI_FUNCTION(0x1, "gpio_out"),
@@ -1000,20 +1032,24 @@ static const struct sunxi_desc_pin sun5i_a13_pins[] = {
1000 SUNXI_PIN(SUNXI_PINCTRL_PIN_PB2, 1032 SUNXI_PIN(SUNXI_PINCTRL_PIN_PB2,
1001 SUNXI_FUNCTION(0x0, "gpio_in"), 1033 SUNXI_FUNCTION(0x0, "gpio_in"),
1002 SUNXI_FUNCTION(0x1, "gpio_out"), 1034 SUNXI_FUNCTION(0x1, "gpio_out"),
1003 SUNXI_FUNCTION(0x2, "pwm")), 1035 SUNXI_FUNCTION(0x2, "pwm"),
1036 SUNXI_FUNCTION_IRQ(0x6, 16)), /* EINT16 */
1004 SUNXI_PIN(SUNXI_PINCTRL_PIN_PB3, 1037 SUNXI_PIN(SUNXI_PINCTRL_PIN_PB3,
1005 SUNXI_FUNCTION(0x0, "gpio_in"), 1038 SUNXI_FUNCTION(0x0, "gpio_in"),
1006 SUNXI_FUNCTION(0x1, "gpio_out"), 1039 SUNXI_FUNCTION(0x1, "gpio_out"),
1007 SUNXI_FUNCTION(0x2, "ir0")), /* TX */ 1040 SUNXI_FUNCTION(0x2, "ir0"), /* TX */
1041 SUNXI_FUNCTION_IRQ(0x6, 17)), /* EINT17 */
1008 SUNXI_PIN(SUNXI_PINCTRL_PIN_PB4, 1042 SUNXI_PIN(SUNXI_PINCTRL_PIN_PB4,
1009 SUNXI_FUNCTION(0x0, "gpio_in"), 1043 SUNXI_FUNCTION(0x0, "gpio_in"),
1010 SUNXI_FUNCTION(0x1, "gpio_out"), 1044 SUNXI_FUNCTION(0x1, "gpio_out"),
1011 SUNXI_FUNCTION(0x2, "ir0")), /* RX */ 1045 SUNXI_FUNCTION(0x2, "ir0"), /* RX */
1046 SUNXI_FUNCTION_IRQ(0x6, 18)), /* EINT18 */
1012 /* Hole */ 1047 /* Hole */
1013 SUNXI_PIN(SUNXI_PINCTRL_PIN_PB10, 1048 SUNXI_PIN(SUNXI_PINCTRL_PIN_PB10,
1014 SUNXI_FUNCTION(0x0, "gpio_in"), 1049 SUNXI_FUNCTION(0x0, "gpio_in"),
1015 SUNXI_FUNCTION(0x1, "gpio_out"), 1050 SUNXI_FUNCTION(0x1, "gpio_out"),
1016 SUNXI_FUNCTION(0x2, "spi2")), /* CS1 */ 1051 SUNXI_FUNCTION(0x2, "spi2"), /* CS1 */
1052 SUNXI_FUNCTION_IRQ(0x6, 24)), /* EINT24 */
1017 /* Hole */ 1053 /* Hole */
1018 SUNXI_PIN(SUNXI_PINCTRL_PIN_PB15, 1054 SUNXI_PIN(SUNXI_PINCTRL_PIN_PB15,
1019 SUNXI_FUNCTION(0x0, "gpio_in"), 1055 SUNXI_FUNCTION(0x0, "gpio_in"),
@@ -1211,11 +1247,13 @@ static const struct sunxi_desc_pin sun5i_a13_pins[] = {
1211 SUNXI_PIN(SUNXI_PINCTRL_PIN_PE0, 1247 SUNXI_PIN(SUNXI_PINCTRL_PIN_PE0,
1212 SUNXI_FUNCTION(0x0, "gpio_in"), 1248 SUNXI_FUNCTION(0x0, "gpio_in"),
1213 SUNXI_FUNCTION(0x3, "csi0"), /* PCLK */ 1249 SUNXI_FUNCTION(0x3, "csi0"), /* PCLK */
1214 SUNXI_FUNCTION(0x4, "spi2")), /* CS0 */ 1250 SUNXI_FUNCTION(0x4, "spi2"), /* CS0 */
1251 SUNXI_FUNCTION_IRQ(0x6, 14)), /* EINT14 */
1215 SUNXI_PIN(SUNXI_PINCTRL_PIN_PE1, 1252 SUNXI_PIN(SUNXI_PINCTRL_PIN_PE1,
1216 SUNXI_FUNCTION(0x0, "gpio_in"), 1253 SUNXI_FUNCTION(0x0, "gpio_in"),
1217 SUNXI_FUNCTION(0x3, "csi0"), /* MCLK */ 1254 SUNXI_FUNCTION(0x3, "csi0"), /* MCLK */
1218 SUNXI_FUNCTION(0x4, "spi2")), /* CLK */ 1255 SUNXI_FUNCTION(0x4, "spi2"), /* CLK */
1256 SUNXI_FUNCTION_IRQ(0x6, 15)), /* EINT15 */
1219 SUNXI_PIN(SUNXI_PINCTRL_PIN_PE2, 1257 SUNXI_PIN(SUNXI_PINCTRL_PIN_PE2,
1220 SUNXI_FUNCTION(0x0, "gpio_in"), 1258 SUNXI_FUNCTION(0x0, "gpio_in"),
1221 SUNXI_FUNCTION(0x3, "csi0"), /* HSYNC */ 1259 SUNXI_FUNCTION(0x3, "csi0"), /* HSYNC */
@@ -1293,44 +1331,53 @@ static const struct sunxi_desc_pin sun5i_a13_pins[] = {
1293 /* Hole */ 1331 /* Hole */
1294 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG0, 1332 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG0,
1295 SUNXI_FUNCTION(0x0, "gpio_in"), 1333 SUNXI_FUNCTION(0x0, "gpio_in"),
1296 SUNXI_FUNCTION(0x1, "gpio_out")), 1334 SUNXI_FUNCTION(0x1, "gpio_out"),
1335 SUNXI_FUNCTION_IRQ(0x6, 0)), /* EINT0 */
1297 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG1, 1336 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG1,
1298 SUNXI_FUNCTION(0x0, "gpio_in"), 1337 SUNXI_FUNCTION(0x0, "gpio_in"),
1299 SUNXI_FUNCTION(0x1, "gpio_out")), 1338 SUNXI_FUNCTION(0x1, "gpio_out"),
1339 SUNXI_FUNCTION_IRQ(0x6, 1)), /* EINT1 */
1300 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG2, 1340 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG2,
1301 SUNXI_FUNCTION(0x0, "gpio_in"), 1341 SUNXI_FUNCTION(0x0, "gpio_in"),
1302 SUNXI_FUNCTION(0x1, "gpio_out")), 1342 SUNXI_FUNCTION(0x1, "gpio_out"),
1343 SUNXI_FUNCTION_IRQ(0x6, 2)), /* EINT2 */
1303 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG3, 1344 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG3,
1304 SUNXI_FUNCTION(0x0, "gpio_in"), 1345 SUNXI_FUNCTION(0x0, "gpio_in"),
1305 SUNXI_FUNCTION(0x1, "gpio_out"), 1346 SUNXI_FUNCTION(0x1, "gpio_out"),
1306 SUNXI_FUNCTION(0x2, "mmc1"), /* CMD */ 1347 SUNXI_FUNCTION(0x2, "mmc1"), /* CMD */
1307 SUNXI_FUNCTION(0x4, "uart1")), /* TX */ 1348 SUNXI_FUNCTION(0x4, "uart1"), /* TX */
1349 SUNXI_FUNCTION_IRQ(0x6, 3)), /* EINT3 */
1308 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG4, 1350 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG4,
1309 SUNXI_FUNCTION(0x0, "gpio_in"), 1351 SUNXI_FUNCTION(0x0, "gpio_in"),
1310 SUNXI_FUNCTION(0x1, "gpio_out"), 1352 SUNXI_FUNCTION(0x1, "gpio_out"),
1311 SUNXI_FUNCTION(0x2, "mmc1"), /* CLK */ 1353 SUNXI_FUNCTION(0x2, "mmc1"), /* CLK */
1312 SUNXI_FUNCTION(0x4, "uart1")), /* RX */ 1354 SUNXI_FUNCTION(0x4, "uart1"), /* RX */
1313/* Hole */ 1355 SUNXI_FUNCTION_IRQ(0x6, 4)), /* EINT4 */
1356 /* Hole */
1314 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG9, 1357 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG9,
1315 SUNXI_FUNCTION(0x0, "gpio_in"), 1358 SUNXI_FUNCTION(0x0, "gpio_in"),
1316 SUNXI_FUNCTION(0x1, "gpio_out"), 1359 SUNXI_FUNCTION(0x1, "gpio_out"),
1317 SUNXI_FUNCTION(0x2, "spi1"), /* CS0 */ 1360 SUNXI_FUNCTION(0x2, "spi1"), /* CS0 */
1318 SUNXI_FUNCTION(0x3, "uart3")), /* TX */ 1361 SUNXI_FUNCTION(0x3, "uart3"), /* TX */
1362 SUNXI_FUNCTION_IRQ(0x6, 9)), /* EINT9 */
1319 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG10, 1363 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG10,
1320 SUNXI_FUNCTION(0x0, "gpio_in"), 1364 SUNXI_FUNCTION(0x0, "gpio_in"),
1321 SUNXI_FUNCTION(0x1, "gpio_out"), 1365 SUNXI_FUNCTION(0x1, "gpio_out"),
1322 SUNXI_FUNCTION(0x2, "spi1"), /* CLK */ 1366 SUNXI_FUNCTION(0x2, "spi1"), /* CLK */
1323 SUNXI_FUNCTION(0x3, "uart3")), /* RX */ 1367 SUNXI_FUNCTION(0x3, "uart3"), /* RX */
1368 SUNXI_FUNCTION_IRQ(0x6, 10)), /* EINT10 */
1324 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG11, 1369 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG11,
1325 SUNXI_FUNCTION(0x0, "gpio_in"), 1370 SUNXI_FUNCTION(0x0, "gpio_in"),
1326 SUNXI_FUNCTION(0x1, "gpio_out"), 1371 SUNXI_FUNCTION(0x1, "gpio_out"),
1327 SUNXI_FUNCTION(0x2, "spi1"), /* MOSI */ 1372 SUNXI_FUNCTION(0x2, "spi1"), /* MOSI */
1328 SUNXI_FUNCTION(0x3, "uart3")), /* CTS */ 1373 SUNXI_FUNCTION(0x3, "uart3"), /* CTS */
1374 SUNXI_FUNCTION_IRQ(0x6, 11)), /* EINT11 */
1329 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG12, 1375 SUNXI_PIN(SUNXI_PINCTRL_PIN_PG12,
1330 SUNXI_FUNCTION(0x0, "gpio_in"), 1376 SUNXI_FUNCTION(0x0, "gpio_in"),
1331 SUNXI_FUNCTION(0x1, "gpio_out"), 1377 SUNXI_FUNCTION(0x1, "gpio_out"),
1332 SUNXI_FUNCTION(0x2, "spi1"), /* MISO */ 1378 SUNXI_FUNCTION(0x2, "spi1"), /* MISO */
1333 SUNXI_FUNCTION(0x3, "uart3")), /* RTS */ 1379 SUNXI_FUNCTION(0x3, "uart3"), /* RTS */
1380 SUNXI_FUNCTION_IRQ(0x6, 12)), /* EINT12 */
1334}; 1381};
1335 1382
1336static const struct sunxi_pinctrl_desc sun4i_a10_pinctrl_data = { 1383static const struct sunxi_pinctrl_desc sun4i_a10_pinctrl_data = {