Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'sh-pfc-for-v4.10-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers into devel

pinctrl: sh-pfc: Updates for v4.10 (take two)

- DU and EtherAVB pin groups for R-Car M3-W,
- Bias handling cleanups and bug fixes,
- Drive-strength for non-GPIO pins for R-Car H3,
- EtherAVB MDIO & MII, and QSPI pin groups for R-Car H3.

+805 -355
+15
drivers/pinctrl/sh-pfc/core.c
··· 389 389 return 0; 390 390 } 391 391 392 + const struct sh_pfc_bias_info * 393 + sh_pfc_pin_to_bias_info(const struct sh_pfc_bias_info *info, 394 + unsigned int num, unsigned int pin) 395 + { 396 + unsigned int i; 397 + 398 + for (i = 0; i < num; i++) 399 + if (info[i].pin == pin) 400 + return &info[i]; 401 + 402 + WARN_ONCE(1, "Pin %u is not in bias info list\n", pin); 403 + 404 + return NULL; 405 + } 406 + 392 407 static int sh_pfc_init_ranges(struct sh_pfc *pfc) 393 408 { 394 409 struct sh_pfc_pin_range *range;
+4
drivers/pinctrl/sh-pfc/core.h
··· 33 33 int sh_pfc_get_pin_index(struct sh_pfc *pfc, unsigned int pin); 34 34 int sh_pfc_config_mux(struct sh_pfc *pfc, unsigned mark, int pinmux_type); 35 35 36 + const struct sh_pfc_bias_info * 37 + sh_pfc_pin_to_bias_info(const struct sh_pfc_bias_info *info, 38 + unsigned int num, unsigned int pin); 39 + 36 40 #endif /* __SH_PFC_CORE_H__ */
+167 -165
drivers/pinctrl/sh-pfc/pfc-r8a7778.c
··· 24 24 #include <linux/kernel.h> 25 25 #include <linux/pinctrl/pinconf-generic.h> 26 26 27 + #include "core.h" 27 28 #include "sh_pfc.h" 28 29 29 30 #define PORT_GP_PUP_1(bank, pin, fn, sfx) \ ··· 2919 2918 #define PUPR4 0x110 2920 2919 #define PUPR5 0x114 2921 2920 2922 - static const struct { 2923 - u16 reg : 11; 2924 - u16 bit : 5; 2925 - } pullups[] = { 2926 - [RCAR_GP_PIN(0, 6)] = { PUPR0, 0 }, /* A0 */ 2927 - [RCAR_GP_PIN(0, 7)] = { PUPR0, 1 }, /* A1 */ 2928 - [RCAR_GP_PIN(0, 8)] = { PUPR0, 2 }, /* A2 */ 2929 - [RCAR_GP_PIN(0, 9)] = { PUPR0, 3 }, /* A3 */ 2930 - [RCAR_GP_PIN(0, 10)] = { PUPR0, 4 }, /* A4 */ 2931 - [RCAR_GP_PIN(0, 11)] = { PUPR0, 5 }, /* A5 */ 2932 - [RCAR_GP_PIN(0, 12)] = { PUPR0, 6 }, /* A6 */ 2933 - [RCAR_GP_PIN(0, 13)] = { PUPR0, 7 }, /* A7 */ 2934 - [RCAR_GP_PIN(0, 14)] = { PUPR0, 8 }, /* A8 */ 2935 - [RCAR_GP_PIN(0, 15)] = { PUPR0, 9 }, /* A9 */ 2936 - [RCAR_GP_PIN(0, 16)] = { PUPR0, 10 }, /* A10 */ 2937 - [RCAR_GP_PIN(0, 17)] = { PUPR0, 11 }, /* A11 */ 2938 - [RCAR_GP_PIN(0, 18)] = { PUPR0, 12 }, /* A12 */ 2939 - [RCAR_GP_PIN(0, 19)] = { PUPR0, 13 }, /* A13 */ 2940 - [RCAR_GP_PIN(0, 20)] = { PUPR0, 14 }, /* A14 */ 2941 - [RCAR_GP_PIN(0, 21)] = { PUPR0, 15 }, /* A15 */ 2942 - [RCAR_GP_PIN(0, 22)] = { PUPR0, 16 }, /* A16 */ 2943 - [RCAR_GP_PIN(0, 23)] = { PUPR0, 17 }, /* A17 */ 2944 - [RCAR_GP_PIN(0, 24)] = { PUPR0, 18 }, /* A18 */ 2945 - [RCAR_GP_PIN(0, 25)] = { PUPR0, 19 }, /* A19 */ 2946 - [RCAR_GP_PIN(0, 26)] = { PUPR0, 20 }, /* A20 */ 2947 - [RCAR_GP_PIN(0, 27)] = { PUPR0, 21 }, /* A21 */ 2948 - [RCAR_GP_PIN(0, 28)] = { PUPR0, 22 }, /* A22 */ 2949 - [RCAR_GP_PIN(0, 29)] = { PUPR0, 23 }, /* A23 */ 2950 - [RCAR_GP_PIN(0, 30)] = { PUPR0, 24 }, /* A24 */ 2951 - [RCAR_GP_PIN(0, 31)] = { PUPR0, 25 }, /* A25 */ 2952 - [RCAR_GP_PIN(1, 3)] = { PUPR0, 26 }, /* /EX_CS0 */ 2953 - [RCAR_GP_PIN(1, 4)] = { PUPR0, 27 }, /* /EX_CS1 */ 2954 - [RCAR_GP_PIN(1, 5)] = { PUPR0, 28 }, /* /EX_CS2 */ 2955 - [RCAR_GP_PIN(1, 6)] = { PUPR0, 29 }, /* /EX_CS3 */ 2956 - [RCAR_GP_PIN(1, 7)] = { PUPR0, 30 }, /* /EX_CS4 */ 2957 - [RCAR_GP_PIN(1, 8)] = { PUPR0, 31 }, /* /EX_CS5 */ 2921 + static const struct sh_pfc_bias_info bias_info[] = { 2922 + { RCAR_GP_PIN(0, 6), PUPR0, 0 }, /* A0 */ 2923 + { RCAR_GP_PIN(0, 7), PUPR0, 1 }, /* A1 */ 2924 + { RCAR_GP_PIN(0, 8), PUPR0, 2 }, /* A2 */ 2925 + { RCAR_GP_PIN(0, 9), PUPR0, 3 }, /* A3 */ 2926 + { RCAR_GP_PIN(0, 10), PUPR0, 4 }, /* A4 */ 2927 + { RCAR_GP_PIN(0, 11), PUPR0, 5 }, /* A5 */ 2928 + { RCAR_GP_PIN(0, 12), PUPR0, 6 }, /* A6 */ 2929 + { RCAR_GP_PIN(0, 13), PUPR0, 7 }, /* A7 */ 2930 + { RCAR_GP_PIN(0, 14), PUPR0, 8 }, /* A8 */ 2931 + { RCAR_GP_PIN(0, 15), PUPR0, 9 }, /* A9 */ 2932 + { RCAR_GP_PIN(0, 16), PUPR0, 10 }, /* A10 */ 2933 + { RCAR_GP_PIN(0, 17), PUPR0, 11 }, /* A11 */ 2934 + { RCAR_GP_PIN(0, 18), PUPR0, 12 }, /* A12 */ 2935 + { RCAR_GP_PIN(0, 19), PUPR0, 13 }, /* A13 */ 2936 + { RCAR_GP_PIN(0, 20), PUPR0, 14 }, /* A14 */ 2937 + { RCAR_GP_PIN(0, 21), PUPR0, 15 }, /* A15 */ 2938 + { RCAR_GP_PIN(0, 22), PUPR0, 16 }, /* A16 */ 2939 + { RCAR_GP_PIN(0, 23), PUPR0, 17 }, /* A17 */ 2940 + { RCAR_GP_PIN(0, 24), PUPR0, 18 }, /* A18 */ 2941 + { RCAR_GP_PIN(0, 25), PUPR0, 19 }, /* A19 */ 2942 + { RCAR_GP_PIN(0, 26), PUPR0, 20 }, /* A20 */ 2943 + { RCAR_GP_PIN(0, 27), PUPR0, 21 }, /* A21 */ 2944 + { RCAR_GP_PIN(0, 28), PUPR0, 22 }, /* A22 */ 2945 + { RCAR_GP_PIN(0, 29), PUPR0, 23 }, /* A23 */ 2946 + { RCAR_GP_PIN(0, 30), PUPR0, 24 }, /* A24 */ 2947 + { RCAR_GP_PIN(0, 31), PUPR0, 25 }, /* A25 */ 2948 + { RCAR_GP_PIN(1, 3), PUPR0, 26 }, /* /EX_CS0 */ 2949 + { RCAR_GP_PIN(1, 4), PUPR0, 27 }, /* /EX_CS1 */ 2950 + { RCAR_GP_PIN(1, 5), PUPR0, 28 }, /* /EX_CS2 */ 2951 + { RCAR_GP_PIN(1, 6), PUPR0, 29 }, /* /EX_CS3 */ 2952 + { RCAR_GP_PIN(1, 7), PUPR0, 30 }, /* /EX_CS4 */ 2953 + { RCAR_GP_PIN(1, 8), PUPR0, 31 }, /* /EX_CS5 */ 2958 2954 2959 - [RCAR_GP_PIN(0, 0)] = { PUPR1, 0 }, /* /PRESETOUT */ 2960 - [RCAR_GP_PIN(0, 5)] = { PUPR1, 1 }, /* /BS */ 2961 - [RCAR_GP_PIN(1, 0)] = { PUPR1, 2 }, /* RD//WR */ 2962 - [RCAR_GP_PIN(1, 1)] = { PUPR1, 3 }, /* /WE0 */ 2963 - [RCAR_GP_PIN(1, 2)] = { PUPR1, 4 }, /* /WE1 */ 2964 - [RCAR_GP_PIN(1, 11)] = { PUPR1, 5 }, /* EX_WAIT0 */ 2965 - [RCAR_GP_PIN(1, 9)] = { PUPR1, 6 }, /* DREQ0 */ 2966 - [RCAR_GP_PIN(1, 10)] = { PUPR1, 7 }, /* DACK0 */ 2967 - [RCAR_GP_PIN(1, 12)] = { PUPR1, 8 }, /* IRQ0 */ 2968 - [RCAR_GP_PIN(1, 13)] = { PUPR1, 9 }, /* IRQ1 */ 2955 + { RCAR_GP_PIN(0, 0), PUPR1, 0 }, /* /PRESETOUT */ 2956 + { RCAR_GP_PIN(0, 5), PUPR1, 1 }, /* /BS */ 2957 + { RCAR_GP_PIN(1, 0), PUPR1, 2 }, /* RD//WR */ 2958 + { RCAR_GP_PIN(1, 1), PUPR1, 3 }, /* /WE0 */ 2959 + { RCAR_GP_PIN(1, 2), PUPR1, 4 }, /* /WE1 */ 2960 + { RCAR_GP_PIN(1, 11), PUPR1, 5 }, /* EX_WAIT0 */ 2961 + { RCAR_GP_PIN(1, 9), PUPR1, 6 }, /* DREQ0 */ 2962 + { RCAR_GP_PIN(1, 10), PUPR1, 7 }, /* DACK0 */ 2963 + { RCAR_GP_PIN(1, 12), PUPR1, 8 }, /* IRQ0 */ 2964 + { RCAR_GP_PIN(1, 13), PUPR1, 9 }, /* IRQ1 */ 2969 2965 2970 - [RCAR_GP_PIN(1, 22)] = { PUPR2, 0 }, /* DU0_DR0 */ 2971 - [RCAR_GP_PIN(1, 23)] = { PUPR2, 1 }, /* DU0_DR1 */ 2972 - [RCAR_GP_PIN(1, 24)] = { PUPR2, 2 }, /* DU0_DR2 */ 2973 - [RCAR_GP_PIN(1, 25)] = { PUPR2, 3 }, /* DU0_DR3 */ 2974 - [RCAR_GP_PIN(1, 26)] = { PUPR2, 4 }, /* DU0_DR4 */ 2975 - [RCAR_GP_PIN(1, 27)] = { PUPR2, 5 }, /* DU0_DR5 */ 2976 - [RCAR_GP_PIN(1, 28)] = { PUPR2, 6 }, /* DU0_DR6 */ 2977 - [RCAR_GP_PIN(1, 29)] = { PUPR2, 7 }, /* DU0_DR7 */ 2978 - [RCAR_GP_PIN(1, 30)] = { PUPR2, 8 }, /* DU0_DG0 */ 2979 - [RCAR_GP_PIN(1, 31)] = { PUPR2, 9 }, /* DU0_DG1 */ 2980 - [RCAR_GP_PIN(2, 0)] = { PUPR2, 10 }, /* DU0_DG2 */ 2981 - [RCAR_GP_PIN(2, 1)] = { PUPR2, 11 }, /* DU0_DG3 */ 2982 - [RCAR_GP_PIN(2, 2)] = { PUPR2, 12 }, /* DU0_DG4 */ 2983 - [RCAR_GP_PIN(2, 3)] = { PUPR2, 13 }, /* DU0_DG5 */ 2984 - [RCAR_GP_PIN(2, 4)] = { PUPR2, 14 }, /* DU0_DG6 */ 2985 - [RCAR_GP_PIN(2, 5)] = { PUPR2, 15 }, /* DU0_DG7 */ 2986 - [RCAR_GP_PIN(2, 6)] = { PUPR2, 16 }, /* DU0_DB0 */ 2987 - [RCAR_GP_PIN(2, 7)] = { PUPR2, 17 }, /* DU0_DB1 */ 2988 - [RCAR_GP_PIN(2, 8)] = { PUPR2, 18 }, /* DU0_DB2 */ 2989 - [RCAR_GP_PIN(2, 9)] = { PUPR2, 19 }, /* DU0_DB3 */ 2990 - [RCAR_GP_PIN(2, 10)] = { PUPR2, 20 }, /* DU0_DB4 */ 2991 - [RCAR_GP_PIN(2, 11)] = { PUPR2, 21 }, /* DU0_DB5 */ 2992 - [RCAR_GP_PIN(2, 12)] = { PUPR2, 22 }, /* DU0_DB6 */ 2993 - [RCAR_GP_PIN(2, 13)] = { PUPR2, 23 }, /* DU0_DB7 */ 2994 - [RCAR_GP_PIN(2, 14)] = { PUPR2, 24 }, /* DU0_DOTCLKIN */ 2995 - [RCAR_GP_PIN(2, 15)] = { PUPR2, 25 }, /* DU0_DOTCLKOUT0 */ 2996 - [RCAR_GP_PIN(2, 17)] = { PUPR2, 26 }, /* DU0_HSYNC */ 2997 - [RCAR_GP_PIN(2, 18)] = { PUPR2, 27 }, /* DU0_VSYNC */ 2998 - [RCAR_GP_PIN(2, 19)] = { PUPR2, 28 }, /* DU0_EXODDF */ 2999 - [RCAR_GP_PIN(2, 20)] = { PUPR2, 29 }, /* DU0_DISP */ 3000 - [RCAR_GP_PIN(2, 21)] = { PUPR2, 30 }, /* DU0_CDE */ 3001 - [RCAR_GP_PIN(2, 16)] = { PUPR2, 31 }, /* DU0_DOTCLKOUT1 */ 2966 + { RCAR_GP_PIN(1, 22), PUPR2, 0 }, /* DU0_DR0 */ 2967 + { RCAR_GP_PIN(1, 23), PUPR2, 1 }, /* DU0_DR1 */ 2968 + { RCAR_GP_PIN(1, 24), PUPR2, 2 }, /* DU0_DR2 */ 2969 + { RCAR_GP_PIN(1, 25), PUPR2, 3 }, /* DU0_DR3 */ 2970 + { RCAR_GP_PIN(1, 26), PUPR2, 4 }, /* DU0_DR4 */ 2971 + { RCAR_GP_PIN(1, 27), PUPR2, 5 }, /* DU0_DR5 */ 2972 + { RCAR_GP_PIN(1, 28), PUPR2, 6 }, /* DU0_DR6 */ 2973 + { RCAR_GP_PIN(1, 29), PUPR2, 7 }, /* DU0_DR7 */ 2974 + { RCAR_GP_PIN(1, 30), PUPR2, 8 }, /* DU0_DG0 */ 2975 + { RCAR_GP_PIN(1, 31), PUPR2, 9 }, /* DU0_DG1 */ 2976 + { RCAR_GP_PIN(2, 0), PUPR2, 10 }, /* DU0_DG2 */ 2977 + { RCAR_GP_PIN(2, 1), PUPR2, 11 }, /* DU0_DG3 */ 2978 + { RCAR_GP_PIN(2, 2), PUPR2, 12 }, /* DU0_DG4 */ 2979 + { RCAR_GP_PIN(2, 3), PUPR2, 13 }, /* DU0_DG5 */ 2980 + { RCAR_GP_PIN(2, 4), PUPR2, 14 }, /* DU0_DG6 */ 2981 + { RCAR_GP_PIN(2, 5), PUPR2, 15 }, /* DU0_DG7 */ 2982 + { RCAR_GP_PIN(2, 6), PUPR2, 16 }, /* DU0_DB0 */ 2983 + { RCAR_GP_PIN(2, 7), PUPR2, 17 }, /* DU0_DB1 */ 2984 + { RCAR_GP_PIN(2, 8), PUPR2, 18 }, /* DU0_DB2 */ 2985 + { RCAR_GP_PIN(2, 9), PUPR2, 19 }, /* DU0_DB3 */ 2986 + { RCAR_GP_PIN(2, 10), PUPR2, 20 }, /* DU0_DB4 */ 2987 + { RCAR_GP_PIN(2, 11), PUPR2, 21 }, /* DU0_DB5 */ 2988 + { RCAR_GP_PIN(2, 12), PUPR2, 22 }, /* DU0_DB6 */ 2989 + { RCAR_GP_PIN(2, 13), PUPR2, 23 }, /* DU0_DB7 */ 2990 + { RCAR_GP_PIN(2, 14), PUPR2, 24 }, /* DU0_DOTCLKIN */ 2991 + { RCAR_GP_PIN(2, 15), PUPR2, 25 }, /* DU0_DOTCLKOUT0 */ 2992 + { RCAR_GP_PIN(2, 17), PUPR2, 26 }, /* DU0_HSYNC */ 2993 + { RCAR_GP_PIN(2, 18), PUPR2, 27 }, /* DU0_VSYNC */ 2994 + { RCAR_GP_PIN(2, 19), PUPR2, 28 }, /* DU0_EXODDF */ 2995 + { RCAR_GP_PIN(2, 20), PUPR2, 29 }, /* DU0_DISP */ 2996 + { RCAR_GP_PIN(2, 21), PUPR2, 30 }, /* DU0_CDE */ 2997 + { RCAR_GP_PIN(2, 16), PUPR2, 31 }, /* DU0_DOTCLKOUT1 */ 3002 2998 3003 - [RCAR_GP_PIN(3, 24)] = { PUPR3, 0 }, /* VI0_CLK */ 3004 - [RCAR_GP_PIN(3, 25)] = { PUPR3, 1 }, /* VI0_CLKENB */ 3005 - [RCAR_GP_PIN(3, 26)] = { PUPR3, 2 }, /* VI0_FIELD */ 3006 - [RCAR_GP_PIN(3, 27)] = { PUPR3, 3 }, /* /VI0_HSYNC */ 3007 - [RCAR_GP_PIN(3, 28)] = { PUPR3, 4 }, /* /VI0_VSYNC */ 3008 - [RCAR_GP_PIN(3, 29)] = { PUPR3, 5 }, /* VI0_DATA0 */ 3009 - [RCAR_GP_PIN(3, 30)] = { PUPR3, 6 }, /* VI0_DATA1 */ 3010 - [RCAR_GP_PIN(3, 31)] = { PUPR3, 7 }, /* VI0_DATA2 */ 3011 - [RCAR_GP_PIN(4, 0)] = { PUPR3, 8 }, /* VI0_DATA3 */ 3012 - [RCAR_GP_PIN(4, 1)] = { PUPR3, 9 }, /* VI0_DATA4 */ 3013 - [RCAR_GP_PIN(4, 2)] = { PUPR3, 10 }, /* VI0_DATA5 */ 3014 - [RCAR_GP_PIN(4, 3)] = { PUPR3, 11 }, /* VI0_DATA6 */ 3015 - [RCAR_GP_PIN(4, 4)] = { PUPR3, 12 }, /* VI0_DATA7 */ 3016 - [RCAR_GP_PIN(4, 5)] = { PUPR3, 13 }, /* VI0_G2 */ 3017 - [RCAR_GP_PIN(4, 6)] = { PUPR3, 14 }, /* VI0_G3 */ 3018 - [RCAR_GP_PIN(4, 7)] = { PUPR3, 15 }, /* VI0_G4 */ 3019 - [RCAR_GP_PIN(4, 8)] = { PUPR3, 16 }, /* VI0_G5 */ 3020 - [RCAR_GP_PIN(4, 21)] = { PUPR3, 17 }, /* VI1_DATA12 */ 3021 - [RCAR_GP_PIN(4, 22)] = { PUPR3, 18 }, /* VI1_DATA13 */ 3022 - [RCAR_GP_PIN(4, 23)] = { PUPR3, 19 }, /* VI1_DATA14 */ 3023 - [RCAR_GP_PIN(4, 24)] = { PUPR3, 20 }, /* VI1_DATA15 */ 3024 - [RCAR_GP_PIN(4, 9)] = { PUPR3, 21 }, /* ETH_REF_CLK */ 3025 - [RCAR_GP_PIN(4, 10)] = { PUPR3, 22 }, /* ETH_TXD0 */ 3026 - [RCAR_GP_PIN(4, 11)] = { PUPR3, 23 }, /* ETH_TXD1 */ 3027 - [RCAR_GP_PIN(4, 12)] = { PUPR3, 24 }, /* ETH_CRS_DV */ 3028 - [RCAR_GP_PIN(4, 13)] = { PUPR3, 25 }, /* ETH_TX_EN */ 3029 - [RCAR_GP_PIN(4, 14)] = { PUPR3, 26 }, /* ETH_RX_ER */ 3030 - [RCAR_GP_PIN(4, 15)] = { PUPR3, 27 }, /* ETH_RXD0 */ 3031 - [RCAR_GP_PIN(4, 16)] = { PUPR3, 28 }, /* ETH_RXD1 */ 3032 - [RCAR_GP_PIN(4, 17)] = { PUPR3, 29 }, /* ETH_MDC */ 3033 - [RCAR_GP_PIN(4, 18)] = { PUPR3, 30 }, /* ETH_MDIO */ 3034 - [RCAR_GP_PIN(4, 19)] = { PUPR3, 31 }, /* ETH_LINK */ 2999 + { RCAR_GP_PIN(3, 24), PUPR3, 0 }, /* VI0_CLK */ 3000 + { RCAR_GP_PIN(3, 25), PUPR3, 1 }, /* VI0_CLKENB */ 3001 + { RCAR_GP_PIN(3, 26), PUPR3, 2 }, /* VI0_FIELD */ 3002 + { RCAR_GP_PIN(3, 27), PUPR3, 3 }, /* /VI0_HSYNC */ 3003 + { RCAR_GP_PIN(3, 28), PUPR3, 4 }, /* /VI0_VSYNC */ 3004 + { RCAR_GP_PIN(3, 29), PUPR3, 5 }, /* VI0_DATA0 */ 3005 + { RCAR_GP_PIN(3, 30), PUPR3, 6 }, /* VI0_DATA1 */ 3006 + { RCAR_GP_PIN(3, 31), PUPR3, 7 }, /* VI0_DATA2 */ 3007 + { RCAR_GP_PIN(4, 0), PUPR3, 8 }, /* VI0_DATA3 */ 3008 + { RCAR_GP_PIN(4, 1), PUPR3, 9 }, /* VI0_DATA4 */ 3009 + { RCAR_GP_PIN(4, 2), PUPR3, 10 }, /* VI0_DATA5 */ 3010 + { RCAR_GP_PIN(4, 3), PUPR3, 11 }, /* VI0_DATA6 */ 3011 + { RCAR_GP_PIN(4, 4), PUPR3, 12 }, /* VI0_DATA7 */ 3012 + { RCAR_GP_PIN(4, 5), PUPR3, 13 }, /* VI0_G2 */ 3013 + { RCAR_GP_PIN(4, 6), PUPR3, 14 }, /* VI0_G3 */ 3014 + { RCAR_GP_PIN(4, 7), PUPR3, 15 }, /* VI0_G4 */ 3015 + { RCAR_GP_PIN(4, 8), PUPR3, 16 }, /* VI0_G5 */ 3016 + { RCAR_GP_PIN(4, 21), PUPR3, 17 }, /* VI1_DATA12 */ 3017 + { RCAR_GP_PIN(4, 22), PUPR3, 18 }, /* VI1_DATA13 */ 3018 + { RCAR_GP_PIN(4, 23), PUPR3, 19 }, /* VI1_DATA14 */ 3019 + { RCAR_GP_PIN(4, 24), PUPR3, 20 }, /* VI1_DATA15 */ 3020 + { RCAR_GP_PIN(4, 9), PUPR3, 21 }, /* ETH_REF_CLK */ 3021 + { RCAR_GP_PIN(4, 10), PUPR3, 22 }, /* ETH_TXD0 */ 3022 + { RCAR_GP_PIN(4, 11), PUPR3, 23 }, /* ETH_TXD1 */ 3023 + { RCAR_GP_PIN(4, 12), PUPR3, 24 }, /* ETH_CRS_DV */ 3024 + { RCAR_GP_PIN(4, 13), PUPR3, 25 }, /* ETH_TX_EN */ 3025 + { RCAR_GP_PIN(4, 14), PUPR3, 26 }, /* ETH_RX_ER */ 3026 + { RCAR_GP_PIN(4, 15), PUPR3, 27 }, /* ETH_RXD0 */ 3027 + { RCAR_GP_PIN(4, 16), PUPR3, 28 }, /* ETH_RXD1 */ 3028 + { RCAR_GP_PIN(4, 17), PUPR3, 29 }, /* ETH_MDC */ 3029 + { RCAR_GP_PIN(4, 18), PUPR3, 30 }, /* ETH_MDIO */ 3030 + { RCAR_GP_PIN(4, 19), PUPR3, 31 }, /* ETH_LINK */ 3035 3031 3036 - [RCAR_GP_PIN(3, 6)] = { PUPR4, 0 }, /* SSI_SCK012 */ 3037 - [RCAR_GP_PIN(3, 7)] = { PUPR4, 1 }, /* SSI_WS012 */ 3038 - [RCAR_GP_PIN(3, 10)] = { PUPR4, 2 }, /* SSI_SDATA0 */ 3039 - [RCAR_GP_PIN(3, 9)] = { PUPR4, 3 }, /* SSI_SDATA1 */ 3040 - [RCAR_GP_PIN(3, 8)] = { PUPR4, 4 }, /* SSI_SDATA2 */ 3041 - [RCAR_GP_PIN(3, 2)] = { PUPR4, 5 }, /* SSI_SCK34 */ 3042 - [RCAR_GP_PIN(3, 3)] = { PUPR4, 6 }, /* SSI_WS34 */ 3043 - [RCAR_GP_PIN(3, 5)] = { PUPR4, 7 }, /* SSI_SDATA3 */ 3044 - [RCAR_GP_PIN(3, 4)] = { PUPR4, 8 }, /* SSI_SDATA4 */ 3045 - [RCAR_GP_PIN(2, 31)] = { PUPR4, 9 }, /* SSI_SCK5 */ 3046 - [RCAR_GP_PIN(3, 0)] = { PUPR4, 10 }, /* SSI_WS5 */ 3047 - [RCAR_GP_PIN(3, 1)] = { PUPR4, 11 }, /* SSI_SDATA5 */ 3048 - [RCAR_GP_PIN(2, 28)] = { PUPR4, 12 }, /* SSI_SCK6 */ 3049 - [RCAR_GP_PIN(2, 29)] = { PUPR4, 13 }, /* SSI_WS6 */ 3050 - [RCAR_GP_PIN(2, 30)] = { PUPR4, 14 }, /* SSI_SDATA6 */ 3051 - [RCAR_GP_PIN(2, 24)] = { PUPR4, 15 }, /* SSI_SCK78 */ 3052 - [RCAR_GP_PIN(2, 25)] = { PUPR4, 16 }, /* SSI_WS78 */ 3053 - [RCAR_GP_PIN(2, 27)] = { PUPR4, 17 }, /* SSI_SDATA7 */ 3054 - [RCAR_GP_PIN(2, 26)] = { PUPR4, 18 }, /* SSI_SDATA8 */ 3055 - [RCAR_GP_PIN(3, 23)] = { PUPR4, 19 }, /* TCLK0 */ 3056 - [RCAR_GP_PIN(3, 11)] = { PUPR4, 20 }, /* SD0_CLK */ 3057 - [RCAR_GP_PIN(3, 12)] = { PUPR4, 21 }, /* SD0_CMD */ 3058 - [RCAR_GP_PIN(3, 13)] = { PUPR4, 22 }, /* SD0_DAT0 */ 3059 - [RCAR_GP_PIN(3, 14)] = { PUPR4, 23 }, /* SD0_DAT1 */ 3060 - [RCAR_GP_PIN(3, 15)] = { PUPR4, 24 }, /* SD0_DAT2 */ 3061 - [RCAR_GP_PIN(3, 16)] = { PUPR4, 25 }, /* SD0_DAT3 */ 3062 - [RCAR_GP_PIN(3, 17)] = { PUPR4, 26 }, /* SD0_CD */ 3063 - [RCAR_GP_PIN(3, 18)] = { PUPR4, 27 }, /* SD0_WP */ 3064 - [RCAR_GP_PIN(2, 22)] = { PUPR4, 28 }, /* AUDIO_CLKA */ 3065 - [RCAR_GP_PIN(2, 23)] = { PUPR4, 29 }, /* AUDIO_CLKB */ 3066 - [RCAR_GP_PIN(1, 14)] = { PUPR4, 30 }, /* IRQ2 */ 3067 - [RCAR_GP_PIN(1, 15)] = { PUPR4, 31 }, /* IRQ3 */ 3032 + { RCAR_GP_PIN(3, 6), PUPR4, 0 }, /* SSI_SCK012 */ 3033 + { RCAR_GP_PIN(3, 7), PUPR4, 1 }, /* SSI_WS012 */ 3034 + { RCAR_GP_PIN(3, 10), PUPR4, 2 }, /* SSI_SDATA0 */ 3035 + { RCAR_GP_PIN(3, 9), PUPR4, 3 }, /* SSI_SDATA1 */ 3036 + { RCAR_GP_PIN(3, 8), PUPR4, 4 }, /* SSI_SDATA2 */ 3037 + { RCAR_GP_PIN(3, 2), PUPR4, 5 }, /* SSI_SCK34 */ 3038 + { RCAR_GP_PIN(3, 3), PUPR4, 6 }, /* SSI_WS34 */ 3039 + { RCAR_GP_PIN(3, 5), PUPR4, 7 }, /* SSI_SDATA3 */ 3040 + { RCAR_GP_PIN(3, 4), PUPR4, 8 }, /* SSI_SDATA4 */ 3041 + { RCAR_GP_PIN(2, 31), PUPR4, 9 }, /* SSI_SCK5 */ 3042 + { RCAR_GP_PIN(3, 0), PUPR4, 10 }, /* SSI_WS5 */ 3043 + { RCAR_GP_PIN(3, 1), PUPR4, 11 }, /* SSI_SDATA5 */ 3044 + { RCAR_GP_PIN(2, 28), PUPR4, 12 }, /* SSI_SCK6 */ 3045 + { RCAR_GP_PIN(2, 29), PUPR4, 13 }, /* SSI_WS6 */ 3046 + { RCAR_GP_PIN(2, 30), PUPR4, 14 }, /* SSI_SDATA6 */ 3047 + { RCAR_GP_PIN(2, 24), PUPR4, 15 }, /* SSI_SCK78 */ 3048 + { RCAR_GP_PIN(2, 25), PUPR4, 16 }, /* SSI_WS78 */ 3049 + { RCAR_GP_PIN(2, 27), PUPR4, 17 }, /* SSI_SDATA7 */ 3050 + { RCAR_GP_PIN(2, 26), PUPR4, 18 }, /* SSI_SDATA8 */ 3051 + { RCAR_GP_PIN(3, 23), PUPR4, 19 }, /* TCLK0 */ 3052 + { RCAR_GP_PIN(3, 11), PUPR4, 20 }, /* SD0_CLK */ 3053 + { RCAR_GP_PIN(3, 12), PUPR4, 21 }, /* SD0_CMD */ 3054 + { RCAR_GP_PIN(3, 13), PUPR4, 22 }, /* SD0_DAT0 */ 3055 + { RCAR_GP_PIN(3, 14), PUPR4, 23 }, /* SD0_DAT1 */ 3056 + { RCAR_GP_PIN(3, 15), PUPR4, 24 }, /* SD0_DAT2 */ 3057 + { RCAR_GP_PIN(3, 16), PUPR4, 25 }, /* SD0_DAT3 */ 3058 + { RCAR_GP_PIN(3, 17), PUPR4, 26 }, /* SD0_CD */ 3059 + { RCAR_GP_PIN(3, 18), PUPR4, 27 }, /* SD0_WP */ 3060 + { RCAR_GP_PIN(2, 22), PUPR4, 28 }, /* AUDIO_CLKA */ 3061 + { RCAR_GP_PIN(2, 23), PUPR4, 29 }, /* AUDIO_CLKB */ 3062 + { RCAR_GP_PIN(1, 14), PUPR4, 30 }, /* IRQ2 */ 3063 + { RCAR_GP_PIN(1, 15), PUPR4, 31 }, /* IRQ3 */ 3068 3064 3069 - [RCAR_GP_PIN(0, 1)] = { PUPR5, 0 }, /* PENC0 */ 3070 - [RCAR_GP_PIN(0, 2)] = { PUPR5, 1 }, /* PENC1 */ 3071 - [RCAR_GP_PIN(0, 3)] = { PUPR5, 2 }, /* USB_OVC0 */ 3072 - [RCAR_GP_PIN(0, 4)] = { PUPR5, 3 }, /* USB_OVC1 */ 3073 - [RCAR_GP_PIN(1, 16)] = { PUPR5, 4 }, /* SCIF_CLK */ 3074 - [RCAR_GP_PIN(1, 17)] = { PUPR5, 5 }, /* TX0 */ 3075 - [RCAR_GP_PIN(1, 18)] = { PUPR5, 6 }, /* RX0 */ 3076 - [RCAR_GP_PIN(1, 19)] = { PUPR5, 7 }, /* SCK0 */ 3077 - [RCAR_GP_PIN(1, 20)] = { PUPR5, 8 }, /* /CTS0 */ 3078 - [RCAR_GP_PIN(1, 21)] = { PUPR5, 9 }, /* /RTS0 */ 3079 - [RCAR_GP_PIN(3, 19)] = { PUPR5, 10 }, /* HSPI_CLK0 */ 3080 - [RCAR_GP_PIN(3, 20)] = { PUPR5, 11 }, /* /HSPI_CS0 */ 3081 - [RCAR_GP_PIN(3, 21)] = { PUPR5, 12 }, /* HSPI_RX0 */ 3082 - [RCAR_GP_PIN(3, 22)] = { PUPR5, 13 }, /* HSPI_TX0 */ 3083 - [RCAR_GP_PIN(4, 20)] = { PUPR5, 14 }, /* ETH_MAGIC */ 3084 - [RCAR_GP_PIN(4, 25)] = { PUPR5, 15 }, /* AVS1 */ 3085 - [RCAR_GP_PIN(4, 26)] = { PUPR5, 16 }, /* AVS2 */ 3065 + { RCAR_GP_PIN(0, 1), PUPR5, 0 }, /* PENC0 */ 3066 + { RCAR_GP_PIN(0, 2), PUPR5, 1 }, /* PENC1 */ 3067 + { RCAR_GP_PIN(0, 3), PUPR5, 2 }, /* USB_OVC0 */ 3068 + { RCAR_GP_PIN(0, 4), PUPR5, 3 }, /* USB_OVC1 */ 3069 + { RCAR_GP_PIN(1, 16), PUPR5, 4 }, /* SCIF_CLK */ 3070 + { RCAR_GP_PIN(1, 17), PUPR5, 5 }, /* TX0 */ 3071 + { RCAR_GP_PIN(1, 18), PUPR5, 6 }, /* RX0 */ 3072 + { RCAR_GP_PIN(1, 19), PUPR5, 7 }, /* SCK0 */ 3073 + { RCAR_GP_PIN(1, 20), PUPR5, 8 }, /* /CTS0 */ 3074 + { RCAR_GP_PIN(1, 21), PUPR5, 9 }, /* /RTS0 */ 3075 + { RCAR_GP_PIN(3, 19), PUPR5, 10 }, /* HSPI_CLK0 */ 3076 + { RCAR_GP_PIN(3, 20), PUPR5, 11 }, /* /HSPI_CS0 */ 3077 + { RCAR_GP_PIN(3, 21), PUPR5, 12 }, /* HSPI_RX0 */ 3078 + { RCAR_GP_PIN(3, 22), PUPR5, 13 }, /* HSPI_TX0 */ 3079 + { RCAR_GP_PIN(4, 20), PUPR5, 14 }, /* ETH_MAGIC */ 3080 + { RCAR_GP_PIN(4, 25), PUPR5, 15 }, /* AVS1 */ 3081 + { RCAR_GP_PIN(4, 26), PUPR5, 16 }, /* AVS2 */ 3086 3082 }; 3087 3083 3088 3084 static unsigned int r8a7778_pinmux_get_bias(struct sh_pfc *pfc, 3089 3085 unsigned int pin) 3090 3086 { 3087 + const struct sh_pfc_bias_info *info; 3091 3088 void __iomem *addr; 3092 3089 3093 - if (WARN_ON_ONCE(!pullups[pin].reg)) 3090 + info = sh_pfc_pin_to_bias_info(bias_info, ARRAY_SIZE(bias_info), pin); 3091 + if (!info) 3094 3092 return PIN_CONFIG_BIAS_DISABLE; 3095 3093 3096 - addr = pfc->windows->virt + pullups[pin].reg; 3094 + addr = pfc->windows->virt + info->reg; 3097 3095 3098 - if (ioread32(addr) & BIT(pullups[pin].bit)) 3096 + if (ioread32(addr) & BIT(info->bit)) 3099 3097 return PIN_CONFIG_BIAS_PULL_UP; 3100 3098 else 3101 3099 return PIN_CONFIG_BIAS_DISABLE; ··· 3103 3103 static void r8a7778_pinmux_set_bias(struct sh_pfc *pfc, unsigned int pin, 3104 3104 unsigned int bias) 3105 3105 { 3106 + const struct sh_pfc_bias_info *info; 3106 3107 void __iomem *addr; 3107 3108 u32 value; 3108 3109 u32 bit; 3109 3110 3110 - if (WARN_ON_ONCE(!pullups[pin].reg)) 3111 + info = sh_pfc_pin_to_bias_info(bias_info, ARRAY_SIZE(bias_info), pin); 3112 + if (!info) 3111 3113 return; 3112 3114 3113 - addr = pfc->windows->virt + pullups[pin].reg; 3114 - bit = BIT(pullups[pin].bit); 3115 + addr = pfc->windows->virt + info->reg; 3116 + bit = BIT(info->bit); 3115 3117 3116 3118 value = ioread32(addr) & ~bit; 3117 3119 if (bias == PIN_CONFIG_BIAS_PULL_UP)
+415 -189
drivers/pinctrl/sh-pfc/pfc-r8a7795.c
··· 523 523 MOD_SEL1_1 \ 524 524 MOD_SEL1_0 MOD_SEL2_0 525 525 526 + /* 527 + * These pins are not able to be muxed but have other properties 528 + * that can be set, such as drive-strength or pull-up/pull-down enable. 529 + */ 530 + #define PINMUX_STATIC \ 531 + FM(QSPI0_SPCLK) FM(QSPI0_SSL) FM(QSPI0_MOSI_IO0) FM(QSPI0_MISO_IO1) \ 532 + FM(QSPI0_IO2) FM(QSPI0_IO3) \ 533 + FM(QSPI1_SPCLK) FM(QSPI1_SSL) FM(QSPI1_MOSI_IO0) FM(QSPI1_MISO_IO1) \ 534 + FM(QSPI1_IO2) FM(QSPI1_IO3) \ 535 + FM(RPC_INT) FM(RPC_WP) FM(RPC_RESET) \ 536 + FM(AVB_TX_CTL) FM(AVB_TXC) FM(AVB_TD0) FM(AVB_TD1) FM(AVB_TD2) FM(AVB_TD3) \ 537 + FM(AVB_RX_CTL) FM(AVB_RXC) FM(AVB_RD0) FM(AVB_RD1) FM(AVB_RD2) FM(AVB_RD3) \ 538 + FM(AVB_TXCREFCLK) FM(AVB_MDIO) \ 539 + FM(CLKOUT) FM(PRESETOUT) \ 540 + FM(DU_DOTCLKIN0) FM(DU_DOTCLKIN1) FM(DU_DOTCLKIN2) FM(DU_DOTCLKIN3) \ 541 + FM(TMS) FM(TDO) FM(ASEBRK) FM(MLB_REF) 526 542 527 543 enum { 528 544 PINMUX_RESERVED = 0, ··· 564 548 PINMUX_GPSR 565 549 PINMUX_IPSR 566 550 PINMUX_MOD_SELS 551 + PINMUX_STATIC 567 552 PINMUX_MARK_END, 568 553 #undef F_ 569 554 #undef FM ··· 1429 1412 PINMUX_IPSR_MSEL(IP17_7_4, STP_ISSYNC_0_E, SEL_SSP1_0_4), 1430 1413 PINMUX_IPSR_MSEL(IP17_7_4, RIF2_D1_B, SEL_DRIF2_1), 1431 1414 PINMUX_IPSR_GPSR(IP17_7_4, TPU0TO3), 1415 + 1416 + /* 1417 + * Static pins can not be muxed between different functions but 1418 + * still needs a mark entry in the pinmux list. Add each static 1419 + * pin to the list without an associated function. The sh-pfc 1420 + * core will do the right thing and skip trying to mux then pin 1421 + * while still applying configuration to it 1422 + */ 1423 + #define FM(x) PINMUX_DATA(x##_MARK, 0), 1424 + PINMUX_STATIC 1425 + #undef FM 1432 1426 }; 1427 + 1428 + /* 1429 + * R8A7795 has 8 banks with 32 PGIOS in each => 256 GPIOs. 1430 + * Physical layout rows: A - AW, cols: 1 - 39. 1431 + */ 1432 + #define ROW_GROUP_A(r) ('Z' - 'A' + 1 + (r)) 1433 + #define PIN_NUMBER(r, c) (((r) - 'A') * 39 + (c) + 300) 1434 + #define PIN_A_NUMBER(r, c) PIN_NUMBER(ROW_GROUP_A(r), c) 1433 1435 1434 1436 static const struct sh_pfc_pin pinmux_pins[] = { 1435 1437 PINMUX_GPIO_GP_ALL(), 1438 + 1439 + /* 1440 + * Pins not associated with a GPIO port. 1441 + * 1442 + * The pin positions are different between different r8a7795 1443 + * packages, all that is needed for the pfc driver is a unique 1444 + * number for each pin. To this end use the pin layout from 1445 + * R-Car H3SiP to calculate a unique number for each pin. 1446 + */ 1447 + SH_PFC_PIN_NAMED_CFG('A', 8, AVB_TX_CTL, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1448 + SH_PFC_PIN_NAMED_CFG('A', 9, AVB_MDIO, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1449 + SH_PFC_PIN_NAMED_CFG('A', 12, AVB_TXCREFCLK, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1450 + SH_PFC_PIN_NAMED_CFG('A', 13, AVB_RD0, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1451 + SH_PFC_PIN_NAMED_CFG('A', 14, AVB_RD2, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1452 + SH_PFC_PIN_NAMED_CFG('A', 16, AVB_RX_CTL, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1453 + SH_PFC_PIN_NAMED_CFG('A', 17, AVB_TD2, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1454 + SH_PFC_PIN_NAMED_CFG('A', 18, AVB_TD0, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1455 + SH_PFC_PIN_NAMED_CFG('A', 19, AVB_TXC, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1456 + SH_PFC_PIN_NAMED_CFG('B', 13, AVB_RD1, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1457 + SH_PFC_PIN_NAMED_CFG('B', 14, AVB_RD3, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1458 + SH_PFC_PIN_NAMED_CFG('B', 17, AVB_TD3, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1459 + SH_PFC_PIN_NAMED_CFG('B', 18, AVB_TD1, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1460 + SH_PFC_PIN_NAMED_CFG('B', 19, AVB_RXC, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1461 + SH_PFC_PIN_NAMED_CFG('C', 1, PRESETOUT#, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1462 + SH_PFC_PIN_NAMED_CFG('F', 1, CLKOUT, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1463 + SH_PFC_PIN_NAMED_CFG('H', 37, MLB_REF, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1464 + SH_PFC_PIN_NAMED_CFG('V', 3, QSPI1_SPCLK, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1465 + SH_PFC_PIN_NAMED_CFG('V', 5, QSPI1_SSL, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1466 + SH_PFC_PIN_NAMED_CFG('V', 6, RPC_WP#, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1467 + SH_PFC_PIN_NAMED_CFG('V', 7, RPC_RESET#, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1468 + SH_PFC_PIN_NAMED_CFG('W', 3, QSPI0_SPCLK, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1469 + SH_PFC_PIN_NAMED_CFG('Y', 3, QSPI0_SSL, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1470 + SH_PFC_PIN_NAMED_CFG('Y', 6, QSPI0_IO2, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1471 + SH_PFC_PIN_NAMED_CFG('Y', 7, RPC_INT#, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1472 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('B'), 4, QSPI0_MISO_IO1, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1473 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('B'), 6, QSPI0_IO3, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1474 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('C'), 3, QSPI1_IO3, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1475 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('C'), 5, QSPI0_MOSI_IO0, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1476 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('C'), 7, QSPI1_MOSI_IO0, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1477 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('D'), 38, FSCLKST#, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1478 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('E'), 4, QSPI1_IO2, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1479 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('E'), 5, QSPI1_MISO_IO1, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1480 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('P'), 7, DU_DOTCLKIN0, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1481 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('P'), 8, DU_DOTCLKIN1, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1482 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('R'), 7, DU_DOTCLKIN2, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1483 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('R'), 8, DU_DOTCLKIN3, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1484 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('R'), 30, TMS, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1485 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('T'), 28, TDO, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1486 + SH_PFC_PIN_NAMED_CFG(ROW_GROUP_A('T'), 30, ASEBRK, SH_PFC_PIN_CFG_DRIVE_STRENGTH), 1436 1487 }; 1437 1488 1438 1489 /* - AUDIO CLOCK ------------------------------------------------------------ */ ··· 1648 1563 AVB_PHY_INT_MARK, 1649 1564 }; 1650 1565 static const unsigned int avb_mdc_pins[] = { 1651 - /* AVB_MDC */ 1652 - RCAR_GP_PIN(2, 9), 1566 + /* AVB_MDC, AVB_MDIO */ 1567 + RCAR_GP_PIN(2, 9), PIN_NUMBER('A', 9), 1653 1568 }; 1654 1569 static const unsigned int avb_mdc_mux[] = { 1655 - AVB_MDC_MARK, 1570 + AVB_MDC_MARK, AVB_MDIO_MARK, 1571 + }; 1572 + static const unsigned int avb_mii_pins[] = { 1573 + /* 1574 + * AVB_TX_CTL, AVB_TXC, AVB_TD0, 1575 + * AVB_TD1, AVB_TD2, AVB_TD3, 1576 + * AVB_RX_CTL, AVB_RXC, AVB_RD0, 1577 + * AVB_RD1, AVB_RD2, AVB_RD3, 1578 + * AVB_TXCREFCLK 1579 + */ 1580 + PIN_NUMBER('A', 8), PIN_NUMBER('A', 19), PIN_NUMBER('A', 18), 1581 + PIN_NUMBER('B', 18), PIN_NUMBER('A', 17), PIN_NUMBER('B', 17), 1582 + PIN_NUMBER('A', 16), PIN_NUMBER('B', 19), PIN_NUMBER('A', 13), 1583 + PIN_NUMBER('B', 13), PIN_NUMBER('A', 14), PIN_NUMBER('B', 14), 1584 + PIN_NUMBER('A', 12), 1585 + 1586 + }; 1587 + static const unsigned int avb_mii_mux[] = { 1588 + AVB_TX_CTL_MARK, AVB_TXC_MARK, AVB_TD0_MARK, 1589 + AVB_TD1_MARK, AVB_TD2_MARK, AVB_TD3_MARK, 1590 + AVB_RX_CTL_MARK, AVB_RXC_MARK, AVB_RD0_MARK, 1591 + AVB_RD1_MARK, AVB_RD2_MARK, AVB_RD3_MARK, 1592 + AVB_TXCREFCLK_MARK, 1656 1593 }; 1657 1594 static const unsigned int avb_avtp_pps_pins[] = { 1658 1595 /* AVB_AVTP_PPS */ ··· 3720 3613 USB2_PWEN_MARK, USB2_OVC_MARK, 3721 3614 }; 3722 3615 3616 + /* - QSPI0 ------------------------------------------------------------------ */ 3617 + static const unsigned int qspi0_ctrl_pins[] = { 3618 + /* QSPI0_SPCLK, QSPI0_SSL */ 3619 + PIN_NUMBER('W', 3), PIN_NUMBER('Y', 3), 3620 + }; 3621 + static const unsigned int qspi0_ctrl_mux[] = { 3622 + QSPI0_SPCLK_MARK, QSPI0_SSL_MARK, 3623 + }; 3624 + static const unsigned int qspi0_data2_pins[] = { 3625 + /* QSPI0_MOSI_IO0, QSPI0_MISO_IO1 */ 3626 + PIN_A_NUMBER('C', 5), PIN_A_NUMBER('B', 4), 3627 + }; 3628 + static const unsigned int qspi0_data2_mux[] = { 3629 + QSPI0_MOSI_IO0_MARK, QSPI0_MISO_IO1_MARK, 3630 + }; 3631 + static const unsigned int qspi0_data4_pins[] = { 3632 + /* QSPI0_MOSI_IO0, QSPI0_MISO_IO1, QSPI0_IO2, QSPI0_IO3 */ 3633 + PIN_A_NUMBER('C', 5), PIN_A_NUMBER('B', 4), 3634 + PIN_NUMBER('Y', 6), PIN_A_NUMBER('B', 6), 3635 + }; 3636 + static const unsigned int qspi0_data4_mux[] = { 3637 + QSPI0_MOSI_IO0_MARK, QSPI0_MISO_IO1_MARK, 3638 + QSPI0_IO2_MARK, QSPI0_IO3_MARK, 3639 + }; 3640 + /* - QSPI1 ------------------------------------------------------------------ */ 3641 + static const unsigned int qspi1_ctrl_pins[] = { 3642 + /* QSPI1_SPCLK, QSPI1_SSL */ 3643 + PIN_NUMBER('V', 3), PIN_NUMBER('V', 5), 3644 + }; 3645 + static const unsigned int qspi1_ctrl_mux[] = { 3646 + QSPI1_SPCLK_MARK, QSPI1_SSL_MARK, 3647 + }; 3648 + static const unsigned int qspi1_data2_pins[] = { 3649 + /* QSPI1_MOSI_IO0, QSPI1_MISO_IO1 */ 3650 + PIN_A_NUMBER('C', 7), PIN_A_NUMBER('E', 5), 3651 + }; 3652 + static const unsigned int qspi1_data2_mux[] = { 3653 + QSPI1_MOSI_IO0_MARK, QSPI1_MISO_IO1_MARK, 3654 + }; 3655 + static const unsigned int qspi1_data4_pins[] = { 3656 + /* QSPI1_MOSI_IO0, QSPI1_MISO_IO1, QSPI1_IO2, QSPI1_IO3 */ 3657 + PIN_A_NUMBER('C', 7), PIN_A_NUMBER('E', 5), 3658 + PIN_A_NUMBER('E', 4), PIN_A_NUMBER('C', 3), 3659 + }; 3660 + static const unsigned int qspi1_data4_mux[] = { 3661 + QSPI1_MOSI_IO0_MARK, QSPI1_MISO_IO1_MARK, 3662 + QSPI1_IO2_MARK, QSPI1_IO3_MARK, 3663 + }; 3664 + 3723 3665 static const struct sh_pfc_pin_group pinmux_groups[] = { 3724 3666 SH_PFC_PIN_GROUP(audio_clk_a_a), 3725 3667 SH_PFC_PIN_GROUP(audio_clk_a_b), ··· 3791 3635 SH_PFC_PIN_GROUP(avb_magic), 3792 3636 SH_PFC_PIN_GROUP(avb_phy_int), 3793 3637 SH_PFC_PIN_GROUP(avb_mdc), 3638 + SH_PFC_PIN_GROUP(avb_mii), 3794 3639 SH_PFC_PIN_GROUP(avb_avtp_pps), 3795 3640 SH_PFC_PIN_GROUP(avb_avtp_match_a), 3796 3641 SH_PFC_PIN_GROUP(avb_avtp_capture_a), ··· 4069 3912 SH_PFC_PIN_GROUP(usb0), 4070 3913 SH_PFC_PIN_GROUP(usb1), 4071 3914 SH_PFC_PIN_GROUP(usb2), 3915 + SH_PFC_PIN_GROUP(qspi0_ctrl), 3916 + SH_PFC_PIN_GROUP(qspi0_data2), 3917 + SH_PFC_PIN_GROUP(qspi0_data4), 3918 + SH_PFC_PIN_GROUP(qspi1_ctrl), 3919 + SH_PFC_PIN_GROUP(qspi1_data2), 3920 + SH_PFC_PIN_GROUP(qspi1_data4), 4072 3921 }; 4073 3922 4074 3923 static const char * const audio_clk_groups[] = { ··· 4102 3939 "avb_magic", 4103 3940 "avb_phy_int", 4104 3941 "avb_mdc", 3942 + "avb_mii", 4105 3943 "avb_avtp_pps", 4106 3944 "avb_avtp_match_a", 4107 3945 "avb_avtp_capture_a", ··· 4520 4356 "usb2", 4521 4357 }; 4522 4358 4359 + static const char * const qspi0_groups[] = { 4360 + "qspi0_ctrl", 4361 + "qspi0_data2", 4362 + "qspi0_data4", 4363 + }; 4364 + 4365 + static const char * const qspi1_groups[] = { 4366 + "qspi1_ctrl", 4367 + "qspi1_data2", 4368 + "qspi1_data4", 4369 + }; 4370 + 4523 4371 static const struct sh_pfc_function pinmux_functions[] = { 4524 4372 SH_PFC_FUNCTION(audio_clk), 4525 4373 SH_PFC_FUNCTION(avb), ··· 4581 4405 SH_PFC_FUNCTION(usb0), 4582 4406 SH_PFC_FUNCTION(usb1), 4583 4407 SH_PFC_FUNCTION(usb2), 4408 + SH_PFC_FUNCTION(qspi0), 4409 + SH_PFC_FUNCTION(qspi1), 4584 4410 }; 4585 4411 4586 4412 static const struct pinmux_cfg_reg pinmux_config_regs[] = { ··· 5140 4962 }; 5141 4963 5142 4964 static const struct pinmux_drive_reg pinmux_drive_regs[] = { 4965 + { PINMUX_DRIVE_REG("DRVCTRL0", 0xe6060300) { 4966 + { PIN_NUMBER('W', 3), 28, 2 }, /* QSPI0_SPCLK */ 4967 + { PIN_A_NUMBER('C', 5), 24, 2 }, /* QSPI0_MOSI_IO0 */ 4968 + { PIN_A_NUMBER('B', 4), 20, 2 }, /* QSPI0_MISO_IO1 */ 4969 + { PIN_NUMBER('Y', 6), 16, 2 }, /* QSPI0_IO2 */ 4970 + { PIN_A_NUMBER('B', 6), 12, 2 }, /* QSPI0_IO3 */ 4971 + { PIN_NUMBER('Y', 3), 8, 2 }, /* QSPI0_SSL */ 4972 + { PIN_NUMBER('V', 3), 4, 2 }, /* QSPI1_SPCLK */ 4973 + { PIN_A_NUMBER('C', 7), 0, 2 }, /* QSPI1_MOSI_IO0 */ 4974 + } }, 4975 + { PINMUX_DRIVE_REG("DRVCTRL1", 0xe6060304) { 4976 + { PIN_A_NUMBER('E', 5), 28, 2 }, /* QSPI1_MISO_IO1 */ 4977 + { PIN_A_NUMBER('E', 4), 24, 2 }, /* QSPI1_IO2 */ 4978 + { PIN_A_NUMBER('C', 3), 20, 2 }, /* QSPI1_IO3 */ 4979 + { PIN_NUMBER('V', 5), 16, 2 }, /* QSPI1_SSL */ 4980 + { PIN_NUMBER('Y', 7), 12, 2 }, /* RPC_INT# */ 4981 + { PIN_NUMBER('V', 6), 8, 2 }, /* RPC_WP# */ 4982 + { PIN_NUMBER('V', 7), 4, 2 }, /* RPC_RESET# */ 4983 + { PIN_NUMBER('A', 16), 0, 3 }, /* AVB_RX_CTL */ 4984 + } }, 4985 + { PINMUX_DRIVE_REG("DRVCTRL2", 0xe6060308) { 4986 + { PIN_NUMBER('B', 19), 28, 3 }, /* AVB_RXC */ 4987 + { PIN_NUMBER('A', 13), 24, 3 }, /* AVB_RD0 */ 4988 + { PIN_NUMBER('B', 13), 20, 3 }, /* AVB_RD1 */ 4989 + { PIN_NUMBER('A', 14), 16, 3 }, /* AVB_RD2 */ 4990 + { PIN_NUMBER('B', 14), 12, 3 }, /* AVB_RD3 */ 4991 + { PIN_NUMBER('A', 8), 8, 3 }, /* AVB_TX_CTL */ 4992 + { PIN_NUMBER('A', 19), 4, 3 }, /* AVB_TXC */ 4993 + { PIN_NUMBER('A', 18), 0, 3 }, /* AVB_TD0 */ 4994 + } }, 5143 4995 { PINMUX_DRIVE_REG("DRVCTRL3", 0xe606030c) { 5144 - { RCAR_GP_PIN(2, 9), 8, 3 }, /* AVB_MDC */ 5145 - { RCAR_GP_PIN(2, 10), 4, 3 }, /* AVB_MAGIC */ 5146 - { RCAR_GP_PIN(2, 11), 0, 3 }, /* AVB_PHY_INT */ 4996 + { PIN_NUMBER('B', 18), 28, 3 }, /* AVB_TD1 */ 4997 + { PIN_NUMBER('A', 17), 24, 3 }, /* AVB_TD2 */ 4998 + { PIN_NUMBER('B', 17), 20, 3 }, /* AVB_TD3 */ 4999 + { PIN_NUMBER('A', 12), 16, 3 }, /* AVB_TXCREFCLK */ 5000 + { PIN_NUMBER('A', 9), 12, 3 }, /* AVB_MDIO */ 5001 + { RCAR_GP_PIN(2, 9), 8, 3 }, /* AVB_MDC */ 5002 + { RCAR_GP_PIN(2, 10), 4, 3 }, /* AVB_MAGIC */ 5003 + { RCAR_GP_PIN(2, 11), 0, 3 }, /* AVB_PHY_INT */ 5147 5004 } }, 5148 5005 { PINMUX_DRIVE_REG("DRVCTRL4", 0xe6060310) { 5149 5006 { RCAR_GP_PIN(2, 12), 28, 3 }, /* AVB_LINK */ ··· 5221 5008 { RCAR_GP_PIN(1, 19), 0, 3 }, /* A19 */ 5222 5009 } }, 5223 5010 { PINMUX_DRIVE_REG("DRVCTRL8", 0xe6060320) { 5011 + { PIN_NUMBER('F', 1), 28, 3 }, /* CLKOUT */ 5224 5012 { RCAR_GP_PIN(1, 20), 24, 3 }, /* CS0 */ 5225 5013 { RCAR_GP_PIN(1, 21), 20, 3 }, /* CS1_A26 */ 5226 5014 { RCAR_GP_PIN(1, 22), 16, 3 }, /* BS */ ··· 5232 5018 } }, 5233 5019 { PINMUX_DRIVE_REG("DRVCTRL9", 0xe6060324) { 5234 5020 { RCAR_GP_PIN(1, 27), 28, 3 }, /* EX_WAIT0 */ 5021 + { PIN_NUMBER('C', 1), 24, 3 }, /* PRESETOUT# */ 5235 5022 { RCAR_GP_PIN(0, 0), 20, 3 }, /* D0 */ 5236 5023 { RCAR_GP_PIN(0, 1), 16, 3 }, /* D1 */ 5237 5024 { RCAR_GP_PIN(0, 2), 12, 3 }, /* D2 */ ··· 5251 5036 { RCAR_GP_PIN(0, 13), 0, 3 }, /* D13 */ 5252 5037 } }, 5253 5038 { PINMUX_DRIVE_REG("DRVCTRL11", 0xe606032c) { 5254 - { RCAR_GP_PIN(0, 14), 28, 3 }, /* D14 */ 5255 - { RCAR_GP_PIN(0, 15), 24, 3 }, /* D15 */ 5256 - { RCAR_GP_PIN(7, 0), 20, 3 }, /* AVS1 */ 5257 - { RCAR_GP_PIN(7, 1), 16, 3 }, /* AVS2 */ 5258 - { RCAR_GP_PIN(7, 2), 12, 3 }, /* HDMI0_CEC */ 5259 - { RCAR_GP_PIN(7, 3), 8, 3 }, /* HDMI1_CEC */ 5039 + { RCAR_GP_PIN(0, 14), 28, 3 }, /* D14 */ 5040 + { RCAR_GP_PIN(0, 15), 24, 3 }, /* D15 */ 5041 + { RCAR_GP_PIN(7, 0), 20, 3 }, /* AVS1 */ 5042 + { RCAR_GP_PIN(7, 1), 16, 3 }, /* AVS2 */ 5043 + { RCAR_GP_PIN(7, 2), 12, 3 }, /* HDMI0_CEC */ 5044 + { RCAR_GP_PIN(7, 3), 8, 3 }, /* HDMI1_CEC */ 5045 + { PIN_A_NUMBER('P', 7), 4, 2 }, /* DU_DOTCLKIN0 */ 5046 + { PIN_A_NUMBER('P', 8), 0, 2 }, /* DU_DOTCLKIN1 */ 5047 + } }, 5048 + { PINMUX_DRIVE_REG("DRVCTRL12", 0xe6060330) { 5049 + { PIN_A_NUMBER('R', 7), 28, 2 }, /* DU_DOTCLKIN2 */ 5050 + { PIN_A_NUMBER('R', 8), 24, 2 }, /* DU_DOTCLKIN3 */ 5051 + { PIN_A_NUMBER('D', 38), 20, 2 }, /* FSCLKST# */ 5052 + { PIN_A_NUMBER('R', 30), 4, 2 }, /* TMS */ 5260 5053 } }, 5261 5054 { PINMUX_DRIVE_REG("DRVCTRL13", 0xe6060334) { 5262 - { RCAR_GP_PIN(3, 0), 20, 3 }, /* SD0_CLK */ 5263 - { RCAR_GP_PIN(3, 1), 16, 3 }, /* SD0_CMD */ 5264 - { RCAR_GP_PIN(3, 2), 12, 3 }, /* SD0_DAT0 */ 5265 - { RCAR_GP_PIN(3, 3), 8, 3 }, /* SD0_DAT1 */ 5266 - { RCAR_GP_PIN(3, 4), 4, 3 }, /* SD0_DAT2 */ 5267 - { RCAR_GP_PIN(3, 5), 0, 3 }, /* SD0_DAT3 */ 5055 + { PIN_A_NUMBER('T', 28), 28, 2 }, /* TDO */ 5056 + { PIN_A_NUMBER('T', 30), 24, 2 }, /* ASEBRK */ 5057 + { RCAR_GP_PIN(3, 0), 20, 3 }, /* SD0_CLK */ 5058 + { RCAR_GP_PIN(3, 1), 16, 3 }, /* SD0_CMD */ 5059 + { RCAR_GP_PIN(3, 2), 12, 3 }, /* SD0_DAT0 */ 5060 + { RCAR_GP_PIN(3, 3), 8, 3 }, /* SD0_DAT1 */ 5061 + { RCAR_GP_PIN(3, 4), 4, 3 }, /* SD0_DAT2 */ 5062 + { RCAR_GP_PIN(3, 5), 0, 3 }, /* SD0_DAT3 */ 5268 5063 } }, 5269 5064 { PINMUX_DRIVE_REG("DRVCTRL14", 0xe6060338) { 5270 5065 { RCAR_GP_PIN(3, 6), 28, 3 }, /* SD1_CLK */ ··· 5343 5118 { RCAR_GP_PIN(5, 23), 16, 3 }, /* MLB_CLK */ 5344 5119 { RCAR_GP_PIN(5, 24), 12, 3 }, /* MLB_SIG */ 5345 5120 { RCAR_GP_PIN(5, 25), 8, 3 }, /* MLB_DAT */ 5121 + { PIN_NUMBER('H', 37), 4, 3 }, /* MLB_REF */ 5346 5122 { RCAR_GP_PIN(6, 0), 0, 3 }, /* SSI_SCK01239 */ 5347 5123 } }, 5348 5124 { PINMUX_DRIVE_REG("DRVCTRL21", 0xe6060354) { ··· 5414 5188 #define PU5 0x14 5415 5189 #define PU6 0x18 5416 5190 5417 - static const struct { 5418 - u16 reg : 11; 5419 - u16 bit : 5; 5420 - } pullups[] = { 5421 - [RCAR_GP_PIN(2, 11)] = { PU0, 31 }, /* AVB_PHY_INT */ 5422 - [RCAR_GP_PIN(2, 10)] = { PU0, 30 }, /* AVB_MAGIC */ 5423 - [RCAR_GP_PIN(2, 9)] = { PU0, 29 }, /* AVB_MDC */ 5191 + static const struct sh_pfc_bias_info bias_info[] = { 5192 + { RCAR_GP_PIN(2, 11), PU0, 31 }, /* AVB_PHY_INT */ 5193 + { RCAR_GP_PIN(2, 10), PU0, 30 }, /* AVB_MAGIC */ 5194 + { RCAR_GP_PIN(2, 9), PU0, 29 }, /* AVB_MDC */ 5424 5195 5425 - [RCAR_GP_PIN(1, 19)] = { PU1, 31 }, /* A19 */ 5426 - [RCAR_GP_PIN(1, 18)] = { PU1, 30 }, /* A18 */ 5427 - [RCAR_GP_PIN(1, 17)] = { PU1, 29 }, /* A17 */ 5428 - [RCAR_GP_PIN(1, 16)] = { PU1, 28 }, /* A16 */ 5429 - [RCAR_GP_PIN(1, 15)] = { PU1, 27 }, /* A15 */ 5430 - [RCAR_GP_PIN(1, 14)] = { PU1, 26 }, /* A14 */ 5431 - [RCAR_GP_PIN(1, 13)] = { PU1, 25 }, /* A13 */ 5432 - [RCAR_GP_PIN(1, 12)] = { PU1, 24 }, /* A12 */ 5433 - [RCAR_GP_PIN(1, 11)] = { PU1, 23 }, /* A11 */ 5434 - [RCAR_GP_PIN(1, 10)] = { PU1, 22 }, /* A10 */ 5435 - [RCAR_GP_PIN(1, 9)] = { PU1, 21 }, /* A9 */ 5436 - [RCAR_GP_PIN(1, 8)] = { PU1, 20 }, /* A8 */ 5437 - [RCAR_GP_PIN(1, 7)] = { PU1, 19 }, /* A7 */ 5438 - [RCAR_GP_PIN(1, 6)] = { PU1, 18 }, /* A6 */ 5439 - [RCAR_GP_PIN(1, 5)] = { PU1, 17 }, /* A5 */ 5440 - [RCAR_GP_PIN(1, 4)] = { PU1, 16 }, /* A4 */ 5441 - [RCAR_GP_PIN(1, 3)] = { PU1, 15 }, /* A3 */ 5442 - [RCAR_GP_PIN(1, 2)] = { PU1, 14 }, /* A2 */ 5443 - [RCAR_GP_PIN(1, 1)] = { PU1, 13 }, /* A1 */ 5444 - [RCAR_GP_PIN(1, 0)] = { PU1, 12 }, /* A0 */ 5445 - [RCAR_GP_PIN(2, 8)] = { PU1, 11 }, /* PWM2_A */ 5446 - [RCAR_GP_PIN(2, 7)] = { PU1, 10 }, /* PWM1_A */ 5447 - [RCAR_GP_PIN(2, 6)] = { PU1, 9 }, /* PWM0 */ 5448 - [RCAR_GP_PIN(2, 5)] = { PU1, 8 }, /* IRQ5 */ 5449 - [RCAR_GP_PIN(2, 4)] = { PU1, 7 }, /* IRQ4 */ 5450 - [RCAR_GP_PIN(2, 3)] = { PU1, 6 }, /* IRQ3 */ 5451 - [RCAR_GP_PIN(2, 2)] = { PU1, 5 }, /* IRQ2 */ 5452 - [RCAR_GP_PIN(2, 1)] = { PU1, 4 }, /* IRQ1 */ 5453 - [RCAR_GP_PIN(2, 0)] = { PU1, 3 }, /* IRQ0 */ 5454 - [RCAR_GP_PIN(2, 14)] = { PU1, 2 }, /* AVB_AVTP_CAPTURE_A */ 5455 - [RCAR_GP_PIN(2, 13)] = { PU1, 1 }, /* AVB_AVTP_MATCH_A */ 5456 - [RCAR_GP_PIN(2, 12)] = { PU1, 0 }, /* AVB_LINK */ 5196 + { RCAR_GP_PIN(1, 19), PU1, 31 }, /* A19 */ 5197 + { RCAR_GP_PIN(1, 18), PU1, 30 }, /* A18 */ 5198 + { RCAR_GP_PIN(1, 17), PU1, 29 }, /* A17 */ 5199 + { RCAR_GP_PIN(1, 16), PU1, 28 }, /* A16 */ 5200 + { RCAR_GP_PIN(1, 15), PU1, 27 }, /* A15 */ 5201 + { RCAR_GP_PIN(1, 14), PU1, 26 }, /* A14 */ 5202 + { RCAR_GP_PIN(1, 13), PU1, 25 }, /* A13 */ 5203 + { RCAR_GP_PIN(1, 12), PU1, 24 }, /* A12 */ 5204 + { RCAR_GP_PIN(1, 11), PU1, 23 }, /* A11 */ 5205 + { RCAR_GP_PIN(1, 10), PU1, 22 }, /* A10 */ 5206 + { RCAR_GP_PIN(1, 9), PU1, 21 }, /* A9 */ 5207 + { RCAR_GP_PIN(1, 8), PU1, 20 }, /* A8 */ 5208 + { RCAR_GP_PIN(1, 7), PU1, 19 }, /* A7 */ 5209 + { RCAR_GP_PIN(1, 6), PU1, 18 }, /* A6 */ 5210 + { RCAR_GP_PIN(1, 5), PU1, 17 }, /* A5 */ 5211 + { RCAR_GP_PIN(1, 4), PU1, 16 }, /* A4 */ 5212 + { RCAR_GP_PIN(1, 3), PU1, 15 }, /* A3 */ 5213 + { RCAR_GP_PIN(1, 2), PU1, 14 }, /* A2 */ 5214 + { RCAR_GP_PIN(1, 1), PU1, 13 }, /* A1 */ 5215 + { RCAR_GP_PIN(1, 0), PU1, 12 }, /* A0 */ 5216 + { RCAR_GP_PIN(2, 8), PU1, 11 }, /* PWM2_A */ 5217 + { RCAR_GP_PIN(2, 7), PU1, 10 }, /* PWM1_A */ 5218 + { RCAR_GP_PIN(2, 6), PU1, 9 }, /* PWM0 */ 5219 + { RCAR_GP_PIN(2, 5), PU1, 8 }, /* IRQ5 */ 5220 + { RCAR_GP_PIN(2, 4), PU1, 7 }, /* IRQ4 */ 5221 + { RCAR_GP_PIN(2, 3), PU1, 6 }, /* IRQ3 */ 5222 + { RCAR_GP_PIN(2, 2), PU1, 5 }, /* IRQ2 */ 5223 + { RCAR_GP_PIN(2, 1), PU1, 4 }, /* IRQ1 */ 5224 + { RCAR_GP_PIN(2, 0), PU1, 3 }, /* IRQ0 */ 5225 + { RCAR_GP_PIN(2, 14), PU1, 2 }, /* AVB_AVTP_CAPTURE_A */ 5226 + { RCAR_GP_PIN(2, 13), PU1, 1 }, /* AVB_AVTP_MATCH_A */ 5227 + { RCAR_GP_PIN(2, 12), PU1, 0 }, /* AVB_LINK */ 5457 5228 5458 - [RCAR_GP_PIN(7, 3)] = { PU2, 29 }, /* HDMI1_CEC */ 5459 - [RCAR_GP_PIN(7, 2)] = { PU2, 28 }, /* HDMI0_CEC */ 5460 - [RCAR_GP_PIN(7, 1)] = { PU2, 27 }, /* AVS2 */ 5461 - [RCAR_GP_PIN(7, 0)] = { PU2, 26 }, /* AVS1 */ 5462 - [RCAR_GP_PIN(0, 15)] = { PU2, 25 }, /* D15 */ 5463 - [RCAR_GP_PIN(0, 14)] = { PU2, 24 }, /* D14 */ 5464 - [RCAR_GP_PIN(0, 13)] = { PU2, 23 }, /* D13 */ 5465 - [RCAR_GP_PIN(0, 12)] = { PU2, 22 }, /* D12 */ 5466 - [RCAR_GP_PIN(0, 11)] = { PU2, 21 }, /* D11 */ 5467 - [RCAR_GP_PIN(0, 10)] = { PU2, 20 }, /* D10 */ 5468 - [RCAR_GP_PIN(0, 9)] = { PU2, 19 }, /* D9 */ 5469 - [RCAR_GP_PIN(0, 8)] = { PU2, 18 }, /* D8 */ 5470 - [RCAR_GP_PIN(0, 7)] = { PU2, 17 }, /* D7 */ 5471 - [RCAR_GP_PIN(0, 6)] = { PU2, 16 }, /* D6 */ 5472 - [RCAR_GP_PIN(0, 5)] = { PU2, 15 }, /* D5 */ 5473 - [RCAR_GP_PIN(0, 4)] = { PU2, 14 }, /* D4 */ 5474 - [RCAR_GP_PIN(0, 3)] = { PU2, 13 }, /* D3 */ 5475 - [RCAR_GP_PIN(0, 2)] = { PU2, 12 }, /* D2 */ 5476 - [RCAR_GP_PIN(0, 1)] = { PU2, 11 }, /* D1 */ 5477 - [RCAR_GP_PIN(0, 0)] = { PU2, 10 }, /* D0 */ 5478 - [RCAR_GP_PIN(1, 27)] = { PU2, 8 }, /* EX_WAIT0_A */ 5479 - [RCAR_GP_PIN(1, 26)] = { PU2, 7 }, /* WE1_N */ 5480 - [RCAR_GP_PIN(1, 25)] = { PU2, 6 }, /* WE0_N */ 5481 - [RCAR_GP_PIN(1, 24)] = { PU2, 5 }, /* RD_WR_N */ 5482 - [RCAR_GP_PIN(1, 23)] = { PU2, 4 }, /* RD_N */ 5483 - [RCAR_GP_PIN(1, 22)] = { PU2, 3 }, /* BS_N */ 5484 - [RCAR_GP_PIN(1, 21)] = { PU2, 2 }, /* CS1_N_A26 */ 5485 - [RCAR_GP_PIN(1, 20)] = { PU2, 1 }, /* CS0_N */ 5229 + { RCAR_GP_PIN(7, 3), PU2, 29 }, /* HDMI1_CEC */ 5230 + { RCAR_GP_PIN(7, 2), PU2, 28 }, /* HDMI0_CEC */ 5231 + { RCAR_GP_PIN(7, 1), PU2, 27 }, /* AVS2 */ 5232 + { RCAR_GP_PIN(7, 0), PU2, 26 }, /* AVS1 */ 5233 + { RCAR_GP_PIN(0, 15), PU2, 25 }, /* D15 */ 5234 + { RCAR_GP_PIN(0, 14), PU2, 24 }, /* D14 */ 5235 + { RCAR_GP_PIN(0, 13), PU2, 23 }, /* D13 */ 5236 + { RCAR_GP_PIN(0, 12), PU2, 22 }, /* D12 */ 5237 + { RCAR_GP_PIN(0, 11), PU2, 21 }, /* D11 */ 5238 + { RCAR_GP_PIN(0, 10), PU2, 20 }, /* D10 */ 5239 + { RCAR_GP_PIN(0, 9), PU2, 19 }, /* D9 */ 5240 + { RCAR_GP_PIN(0, 8), PU2, 18 }, /* D8 */ 5241 + { RCAR_GP_PIN(0, 7), PU2, 17 }, /* D7 */ 5242 + { RCAR_GP_PIN(0, 6), PU2, 16 }, /* D6 */ 5243 + { RCAR_GP_PIN(0, 5), PU2, 15 }, /* D5 */ 5244 + { RCAR_GP_PIN(0, 4), PU2, 14 }, /* D4 */ 5245 + { RCAR_GP_PIN(0, 3), PU2, 13 }, /* D3 */ 5246 + { RCAR_GP_PIN(0, 2), PU2, 12 }, /* D2 */ 5247 + { RCAR_GP_PIN(0, 1), PU2, 11 }, /* D1 */ 5248 + { RCAR_GP_PIN(0, 0), PU2, 10 }, /* D0 */ 5249 + { RCAR_GP_PIN(1, 27), PU2, 8 }, /* EX_WAIT0_A */ 5250 + { RCAR_GP_PIN(1, 26), PU2, 7 }, /* WE1_N */ 5251 + { RCAR_GP_PIN(1, 25), PU2, 6 }, /* WE0_N */ 5252 + { RCAR_GP_PIN(1, 24), PU2, 5 }, /* RD_WR_N */ 5253 + { RCAR_GP_PIN(1, 23), PU2, 4 }, /* RD_N */ 5254 + { RCAR_GP_PIN(1, 22), PU2, 3 }, /* BS_N */ 5255 + { RCAR_GP_PIN(1, 21), PU2, 2 }, /* CS1_N_A26 */ 5256 + { RCAR_GP_PIN(1, 20), PU2, 1 }, /* CS0_N */ 5486 5257 5487 - [RCAR_GP_PIN(4, 9)] = { PU3, 31 }, /* SD3_DAT0 */ 5488 - [RCAR_GP_PIN(4, 8)] = { PU3, 30 }, /* SD3_CMD */ 5489 - [RCAR_GP_PIN(4, 7)] = { PU3, 29 }, /* SD3_CLK */ 5490 - [RCAR_GP_PIN(4, 6)] = { PU3, 28 }, /* SD2_DS */ 5491 - [RCAR_GP_PIN(4, 5)] = { PU3, 27 }, /* SD2_DAT3 */ 5492 - [RCAR_GP_PIN(4, 4)] = { PU3, 26 }, /* SD2_DAT2 */ 5493 - [RCAR_GP_PIN(4, 3)] = { PU3, 25 }, /* SD2_DAT1 */ 5494 - [RCAR_GP_PIN(4, 2)] = { PU3, 24 }, /* SD2_DAT0 */ 5495 - [RCAR_GP_PIN(4, 1)] = { PU3, 23 }, /* SD2_CMD */ 5496 - [RCAR_GP_PIN(4, 0)] = { PU3, 22 }, /* SD2_CLK */ 5497 - [RCAR_GP_PIN(3, 11)] = { PU3, 21 }, /* SD1_DAT3 */ 5498 - [RCAR_GP_PIN(3, 10)] = { PU3, 20 }, /* SD1_DAT2 */ 5499 - [RCAR_GP_PIN(3, 9)] = { PU3, 19 }, /* SD1_DAT1 */ 5500 - [RCAR_GP_PIN(3, 8)] = { PU3, 18 }, /* SD1_DAT0 */ 5501 - [RCAR_GP_PIN(3, 7)] = { PU3, 17 }, /* SD1_CMD */ 5502 - [RCAR_GP_PIN(3, 6)] = { PU3, 16 }, /* SD1_CLK */ 5503 - [RCAR_GP_PIN(3, 5)] = { PU3, 15 }, /* SD0_DAT3 */ 5504 - [RCAR_GP_PIN(3, 4)] = { PU3, 14 }, /* SD0_DAT2 */ 5505 - [RCAR_GP_PIN(3, 3)] = { PU3, 13 }, /* SD0_DAT1 */ 5506 - [RCAR_GP_PIN(3, 2)] = { PU3, 12 }, /* SD0_DAT0 */ 5507 - [RCAR_GP_PIN(3, 1)] = { PU3, 11 }, /* SD0_CMD */ 5508 - [RCAR_GP_PIN(3, 0)] = { PU3, 10 }, /* SD0_CLK */ 5258 + { RCAR_GP_PIN(4, 9), PU3, 31 }, /* SD3_DAT0 */ 5259 + { RCAR_GP_PIN(4, 8), PU3, 30 }, /* SD3_CMD */ 5260 + { RCAR_GP_PIN(4, 7), PU3, 29 }, /* SD3_CLK */ 5261 + { RCAR_GP_PIN(4, 6), PU3, 28 }, /* SD2_DS */ 5262 + { RCAR_GP_PIN(4, 5), PU3, 27 }, /* SD2_DAT3 */ 5263 + { RCAR_GP_PIN(4, 4), PU3, 26 }, /* SD2_DAT2 */ 5264 + { RCAR_GP_PIN(4, 3), PU3, 25 }, /* SD2_DAT1 */ 5265 + { RCAR_GP_PIN(4, 2), PU3, 24 }, /* SD2_DAT0 */ 5266 + { RCAR_GP_PIN(4, 1), PU3, 23 }, /* SD2_CMD */ 5267 + { RCAR_GP_PIN(4, 0), PU3, 22 }, /* SD2_CLK */ 5268 + { RCAR_GP_PIN(3, 11), PU3, 21 }, /* SD1_DAT3 */ 5269 + { RCAR_GP_PIN(3, 10), PU3, 20 }, /* SD1_DAT2 */ 5270 + { RCAR_GP_PIN(3, 9), PU3, 19 }, /* SD1_DAT1 */ 5271 + { RCAR_GP_PIN(3, 8), PU3, 18 }, /* SD1_DAT0 */ 5272 + { RCAR_GP_PIN(3, 7), PU3, 17 }, /* SD1_CMD */ 5273 + { RCAR_GP_PIN(3, 6), PU3, 16 }, /* SD1_CLK */ 5274 + { RCAR_GP_PIN(3, 5), PU3, 15 }, /* SD0_DAT3 */ 5275 + { RCAR_GP_PIN(3, 4), PU3, 14 }, /* SD0_DAT2 */ 5276 + { RCAR_GP_PIN(3, 3), PU3, 13 }, /* SD0_DAT1 */ 5277 + { RCAR_GP_PIN(3, 2), PU3, 12 }, /* SD0_DAT0 */ 5278 + { RCAR_GP_PIN(3, 1), PU3, 11 }, /* SD0_CMD */ 5279 + { RCAR_GP_PIN(3, 0), PU3, 10 }, /* SD0_CLK */ 5509 5280 5510 - [RCAR_GP_PIN(5, 19)] = { PU4, 31 }, /* MSIOF0_SS1 */ 5511 - [RCAR_GP_PIN(5, 18)] = { PU4, 30 }, /* MSIOF0_SYNC */ 5512 - [RCAR_GP_PIN(5, 17)] = { PU4, 29 }, /* MSIOF0_SCK */ 5513 - [RCAR_GP_PIN(5, 16)] = { PU4, 28 }, /* HRTS0_N */ 5514 - [RCAR_GP_PIN(5, 15)] = { PU4, 27 }, /* HCTS0_N */ 5515 - [RCAR_GP_PIN(5, 14)] = { PU4, 26 }, /* HTX0 */ 5516 - [RCAR_GP_PIN(5, 13)] = { PU4, 25 }, /* HRX0 */ 5517 - [RCAR_GP_PIN(5, 12)] = { PU4, 24 }, /* HSCK0 */ 5518 - [RCAR_GP_PIN(5, 11)] = { PU4, 23 }, /* RX2_A */ 5519 - [RCAR_GP_PIN(5, 10)] = { PU4, 22 }, /* TX2_A */ 5520 - [RCAR_GP_PIN(5, 9)] = { PU4, 21 }, /* SCK2 */ 5521 - [RCAR_GP_PIN(5, 8)] = { PU4, 20 }, /* RTS1_N_TANS */ 5522 - [RCAR_GP_PIN(5, 7)] = { PU4, 19 }, /* CTS1_N */ 5523 - [RCAR_GP_PIN(5, 6)] = { PU4, 18 }, /* TX1_A */ 5524 - [RCAR_GP_PIN(5, 5)] = { PU4, 17 }, /* RX1_A */ 5525 - [RCAR_GP_PIN(5, 4)] = { PU4, 16 }, /* RTS0_N_TANS */ 5526 - [RCAR_GP_PIN(5, 3)] = { PU4, 15 }, /* CTS0_N */ 5527 - [RCAR_GP_PIN(5, 2)] = { PU4, 14 }, /* TX0 */ 5528 - [RCAR_GP_PIN(5, 1)] = { PU4, 13 }, /* RX0 */ 5529 - [RCAR_GP_PIN(5, 0)] = { PU4, 12 }, /* SCK0 */ 5530 - [RCAR_GP_PIN(3, 15)] = { PU4, 11 }, /* SD1_WP */ 5531 - [RCAR_GP_PIN(3, 14)] = { PU4, 10 }, /* SD1_CD */ 5532 - [RCAR_GP_PIN(3, 13)] = { PU4, 9 }, /* SD0_WP */ 5533 - [RCAR_GP_PIN(3, 12)] = { PU4, 8 }, /* SD0_CD */ 5534 - [RCAR_GP_PIN(4, 17)] = { PU4, 7 }, /* SD3_DS */ 5535 - [RCAR_GP_PIN(4, 16)] = { PU4, 6 }, /* SD3_DAT7 */ 5536 - [RCAR_GP_PIN(4, 15)] = { PU4, 5 }, /* SD3_DAT6 */ 5537 - [RCAR_GP_PIN(4, 14)] = { PU4, 4 }, /* SD3_DAT5 */ 5538 - [RCAR_GP_PIN(4, 13)] = { PU4, 3 }, /* SD3_DAT4 */ 5539 - [RCAR_GP_PIN(4, 12)] = { PU4, 2 }, /* SD3_DAT3 */ 5540 - [RCAR_GP_PIN(4, 11)] = { PU4, 1 }, /* SD3_DAT2 */ 5541 - [RCAR_GP_PIN(4, 10)] = { PU4, 0 }, /* SD3_DAT1 */ 5281 + { RCAR_GP_PIN(5, 19), PU4, 31 }, /* MSIOF0_SS1 */ 5282 + { RCAR_GP_PIN(5, 18), PU4, 30 }, /* MSIOF0_SYNC */ 5283 + { RCAR_GP_PIN(5, 17), PU4, 29 }, /* MSIOF0_SCK */ 5284 + { RCAR_GP_PIN(5, 16), PU4, 28 }, /* HRTS0_N */ 5285 + { RCAR_GP_PIN(5, 15), PU4, 27 }, /* HCTS0_N */ 5286 + { RCAR_GP_PIN(5, 14), PU4, 26 }, /* HTX0 */ 5287 + { RCAR_GP_PIN(5, 13), PU4, 25 }, /* HRX0 */ 5288 + { RCAR_GP_PIN(5, 12), PU4, 24 }, /* HSCK0 */ 5289 + { RCAR_GP_PIN(5, 11), PU4, 23 }, /* RX2_A */ 5290 + { RCAR_GP_PIN(5, 10), PU4, 22 }, /* TX2_A */ 5291 + { RCAR_GP_PIN(5, 9), PU4, 21 }, /* SCK2 */ 5292 + { RCAR_GP_PIN(5, 8), PU4, 20 }, /* RTS1_N_TANS */ 5293 + { RCAR_GP_PIN(5, 7), PU4, 19 }, /* CTS1_N */ 5294 + { RCAR_GP_PIN(5, 6), PU4, 18 }, /* TX1_A */ 5295 + { RCAR_GP_PIN(5, 5), PU4, 17 }, /* RX1_A */ 5296 + { RCAR_GP_PIN(5, 4), PU4, 16 }, /* RTS0_N_TANS */ 5297 + { RCAR_GP_PIN(5, 3), PU4, 15 }, /* CTS0_N */ 5298 + { RCAR_GP_PIN(5, 2), PU4, 14 }, /* TX0 */ 5299 + { RCAR_GP_PIN(5, 1), PU4, 13 }, /* RX0 */ 5300 + { RCAR_GP_PIN(5, 0), PU4, 12 }, /* SCK0 */ 5301 + { RCAR_GP_PIN(3, 15), PU4, 11 }, /* SD1_WP */ 5302 + { RCAR_GP_PIN(3, 14), PU4, 10 }, /* SD1_CD */ 5303 + { RCAR_GP_PIN(3, 13), PU4, 9 }, /* SD0_WP */ 5304 + { RCAR_GP_PIN(3, 12), PU4, 8 }, /* SD0_CD */ 5305 + { RCAR_GP_PIN(4, 17), PU4, 7 }, /* SD3_DS */ 5306 + { RCAR_GP_PIN(4, 16), PU4, 6 }, /* SD3_DAT7 */ 5307 + { RCAR_GP_PIN(4, 15), PU4, 5 }, /* SD3_DAT6 */ 5308 + { RCAR_GP_PIN(4, 14), PU4, 4 }, /* SD3_DAT5 */ 5309 + { RCAR_GP_PIN(4, 13), PU4, 3 }, /* SD3_DAT4 */ 5310 + { RCAR_GP_PIN(4, 12), PU4, 2 }, /* SD3_DAT3 */ 5311 + { RCAR_GP_PIN(4, 11), PU4, 1 }, /* SD3_DAT2 */ 5312 + { RCAR_GP_PIN(4, 10), PU4, 0 }, /* SD3_DAT1 */ 5542 5313 5543 - [RCAR_GP_PIN(6, 24)] = { PU5, 31 }, /* USB0_PWEN */ 5544 - [RCAR_GP_PIN(6, 23)] = { PU5, 30 }, /* AUDIO_CLKB_B */ 5545 - [RCAR_GP_PIN(6, 22)] = { PU5, 29 }, /* AUDIO_CLKA_A */ 5546 - [RCAR_GP_PIN(6, 21)] = { PU5, 28 }, /* SSI_SDATA9_A */ 5547 - [RCAR_GP_PIN(6, 20)] = { PU5, 27 }, /* SSI_SDATA8 */ 5548 - [RCAR_GP_PIN(6, 19)] = { PU5, 26 }, /* SSI_SDATA7 */ 5549 - [RCAR_GP_PIN(6, 18)] = { PU5, 25 }, /* SSI_WS78 */ 5550 - [RCAR_GP_PIN(6, 17)] = { PU5, 24 }, /* SSI_SCK78 */ 5551 - [RCAR_GP_PIN(6, 16)] = { PU5, 23 }, /* SSI_SDATA6 */ 5552 - [RCAR_GP_PIN(6, 15)] = { PU5, 22 }, /* SSI_WS6 */ 5553 - [RCAR_GP_PIN(6, 14)] = { PU5, 21 }, /* SSI_SCK6 */ 5554 - [RCAR_GP_PIN(6, 13)] = { PU5, 20 }, /* SSI_SDATA5 */ 5555 - [RCAR_GP_PIN(6, 12)] = { PU5, 19 }, /* SSI_WS5 */ 5556 - [RCAR_GP_PIN(6, 11)] = { PU5, 18 }, /* SSI_SCK5 */ 5557 - [RCAR_GP_PIN(6, 10)] = { PU5, 17 }, /* SSI_SDATA4 */ 5558 - [RCAR_GP_PIN(6, 9)] = { PU5, 16 }, /* SSI_WS4 */ 5559 - [RCAR_GP_PIN(6, 8)] = { PU5, 15 }, /* SSI_SCK4 */ 5560 - [RCAR_GP_PIN(6, 7)] = { PU5, 14 }, /* SSI_SDATA3 */ 5561 - [RCAR_GP_PIN(6, 6)] = { PU5, 13 }, /* SSI_WS34 */ 5562 - [RCAR_GP_PIN(6, 5)] = { PU5, 12 }, /* SSI_SCK34 */ 5563 - [RCAR_GP_PIN(6, 4)] = { PU5, 11 }, /* SSI_SDATA2_A */ 5564 - [RCAR_GP_PIN(6, 3)] = { PU5, 10 }, /* SSI_SDATA1_A */ 5565 - [RCAR_GP_PIN(6, 2)] = { PU5, 9 }, /* SSI_SDATA0 */ 5566 - [RCAR_GP_PIN(6, 1)] = { PU5, 8 }, /* SSI_WS01239 */ 5567 - [RCAR_GP_PIN(6, 0)] = { PU5, 7 }, /* SSI_SCK01239 */ 5568 - [RCAR_GP_PIN(5, 25)] = { PU5, 5 }, /* MLB_DAT */ 5569 - [RCAR_GP_PIN(5, 24)] = { PU5, 4 }, /* MLB_SIG */ 5570 - [RCAR_GP_PIN(5, 23)] = { PU5, 3 }, /* MLB_CLK */ 5571 - [RCAR_GP_PIN(5, 22)] = { PU5, 2 }, /* MSIOF0_RXD */ 5572 - [RCAR_GP_PIN(5, 21)] = { PU5, 1 }, /* MSIOF0_SS2 */ 5573 - [RCAR_GP_PIN(5, 20)] = { PU5, 0 }, /* MSIOF0_TXD */ 5314 + { RCAR_GP_PIN(6, 24), PU5, 31 }, /* USB0_PWEN */ 5315 + { RCAR_GP_PIN(6, 23), PU5, 30 }, /* AUDIO_CLKB_B */ 5316 + { RCAR_GP_PIN(6, 22), PU5, 29 }, /* AUDIO_CLKA_A */ 5317 + { RCAR_GP_PIN(6, 21), PU5, 28 }, /* SSI_SDATA9_A */ 5318 + { RCAR_GP_PIN(6, 20), PU5, 27 }, /* SSI_SDATA8 */ 5319 + { RCAR_GP_PIN(6, 19), PU5, 26 }, /* SSI_SDATA7 */ 5320 + { RCAR_GP_PIN(6, 18), PU5, 25 }, /* SSI_WS78 */ 5321 + { RCAR_GP_PIN(6, 17), PU5, 24 }, /* SSI_SCK78 */ 5322 + { RCAR_GP_PIN(6, 16), PU5, 23 }, /* SSI_SDATA6 */ 5323 + { RCAR_GP_PIN(6, 15), PU5, 22 }, /* SSI_WS6 */ 5324 + { RCAR_GP_PIN(6, 14), PU5, 21 }, /* SSI_SCK6 */ 5325 + { RCAR_GP_PIN(6, 13), PU5, 20 }, /* SSI_SDATA5 */ 5326 + { RCAR_GP_PIN(6, 12), PU5, 19 }, /* SSI_WS5 */ 5327 + { RCAR_GP_PIN(6, 11), PU5, 18 }, /* SSI_SCK5 */ 5328 + { RCAR_GP_PIN(6, 10), PU5, 17 }, /* SSI_SDATA4 */ 5329 + { RCAR_GP_PIN(6, 9), PU5, 16 }, /* SSI_WS4 */ 5330 + { RCAR_GP_PIN(6, 8), PU5, 15 }, /* SSI_SCK4 */ 5331 + { RCAR_GP_PIN(6, 7), PU5, 14 }, /* SSI_SDATA3 */ 5332 + { RCAR_GP_PIN(6, 6), PU5, 13 }, /* SSI_WS34 */ 5333 + { RCAR_GP_PIN(6, 5), PU5, 12 }, /* SSI_SCK34 */ 5334 + { RCAR_GP_PIN(6, 4), PU5, 11 }, /* SSI_SDATA2_A */ 5335 + { RCAR_GP_PIN(6, 3), PU5, 10 }, /* SSI_SDATA1_A */ 5336 + { RCAR_GP_PIN(6, 2), PU5, 9 }, /* SSI_SDATA0 */ 5337 + { RCAR_GP_PIN(6, 1), PU5, 8 }, /* SSI_WS01239 */ 5338 + { RCAR_GP_PIN(6, 0), PU5, 7 }, /* SSI_SCK01239 */ 5339 + { RCAR_GP_PIN(5, 25), PU5, 5 }, /* MLB_DAT */ 5340 + { RCAR_GP_PIN(5, 24), PU5, 4 }, /* MLB_SIG */ 5341 + { RCAR_GP_PIN(5, 23), PU5, 3 }, /* MLB_CLK */ 5342 + { RCAR_GP_PIN(5, 22), PU5, 2 }, /* MSIOF0_RXD */ 5343 + { RCAR_GP_PIN(5, 21), PU5, 1 }, /* MSIOF0_SS2 */ 5344 + { RCAR_GP_PIN(5, 20), PU5, 0 }, /* MSIOF0_TXD */ 5574 5345 5575 - [RCAR_GP_PIN(6, 31)] = { PU6, 6 }, /* USB31_OVC */ 5576 - [RCAR_GP_PIN(6, 30)] = { PU6, 5 }, /* USB31_PWEN */ 5577 - [RCAR_GP_PIN(6, 29)] = { PU6, 4 }, /* USB30_OVC */ 5578 - [RCAR_GP_PIN(6, 28)] = { PU6, 3 }, /* USB30_PWEN */ 5579 - [RCAR_GP_PIN(6, 27)] = { PU6, 2 }, /* USB1_OVC */ 5580 - [RCAR_GP_PIN(6, 26)] = { PU6, 1 }, /* USB1_PWEN */ 5581 - [RCAR_GP_PIN(6, 25)] = { PU6, 0 }, /* USB0_OVC */ 5346 + { RCAR_GP_PIN(6, 31), PU6, 6 }, /* USB31_OVC */ 5347 + { RCAR_GP_PIN(6, 30), PU6, 5 }, /* USB31_PWEN */ 5348 + { RCAR_GP_PIN(6, 29), PU6, 4 }, /* USB30_OVC */ 5349 + { RCAR_GP_PIN(6, 28), PU6, 3 }, /* USB30_PWEN */ 5350 + { RCAR_GP_PIN(6, 27), PU6, 2 }, /* USB1_OVC */ 5351 + { RCAR_GP_PIN(6, 26), PU6, 1 }, /* USB1_PWEN */ 5352 + { RCAR_GP_PIN(6, 25), PU6, 0 }, /* USB0_OVC */ 5582 5353 }; 5583 5354 5584 5355 static unsigned int r8a7795_pinmux_get_bias(struct sh_pfc *pfc, 5585 5356 unsigned int pin) 5586 5357 { 5358 + const struct sh_pfc_bias_info *info; 5587 5359 u32 reg; 5588 5360 u32 bit; 5589 5361 5590 - if (WARN_ON_ONCE(!pullups[pin].reg)) 5362 + info = sh_pfc_pin_to_bias_info(bias_info, ARRAY_SIZE(bias_info), pin); 5363 + if (!info) 5591 5364 return PIN_CONFIG_BIAS_DISABLE; 5592 5365 5593 - reg = pullups[pin].reg; 5594 - bit = BIT(pullups[pin].bit); 5366 + reg = info->reg; 5367 + bit = BIT(info->bit); 5595 5368 5596 - if (sh_pfc_read_reg(pfc, PUEN + reg, 32) & bit) { 5597 - if (sh_pfc_read_reg(pfc, PUD + reg, 32) & bit) 5598 - return PIN_CONFIG_BIAS_PULL_UP; 5599 - else 5600 - return PIN_CONFIG_BIAS_PULL_DOWN; 5601 - } else 5369 + if (!(sh_pfc_read_reg(pfc, PUEN + reg, 32) & bit)) 5602 5370 return PIN_CONFIG_BIAS_DISABLE; 5371 + else if (sh_pfc_read_reg(pfc, PUD + reg, 32) & bit) 5372 + return PIN_CONFIG_BIAS_PULL_UP; 5373 + else 5374 + return PIN_CONFIG_BIAS_PULL_DOWN; 5603 5375 } 5604 5376 5605 5377 static void r8a7795_pinmux_set_bias(struct sh_pfc *pfc, unsigned int pin, 5606 5378 unsigned int bias) 5607 5379 { 5380 + const struct sh_pfc_bias_info *info; 5608 5381 u32 enable, updown; 5609 5382 u32 reg; 5610 5383 u32 bit; 5611 5384 5612 - if (WARN_ON_ONCE(!pullups[pin].reg)) 5385 + info = sh_pfc_pin_to_bias_info(bias_info, ARRAY_SIZE(bias_info), pin); 5386 + if (!info) 5613 5387 return; 5614 5388 5615 - reg = pullups[pin].reg; 5616 - bit = BIT(pullups[pin].bit); 5389 + reg = info->reg; 5390 + bit = BIT(info->bit); 5617 5391 5618 5392 enable = sh_pfc_read_reg(pfc, PUEN + reg, 32) & ~bit; 5619 5393 if (bias != PIN_CONFIG_BIAS_DISABLE)
+188
drivers/pinctrl/sh-pfc/pfc-r8a7796.c
··· 1490 1490 PINMUX_GPIO_GP_ALL(), 1491 1491 }; 1492 1492 1493 + /* - EtherAVB --------------------------------------------------------------- */ 1494 + static const unsigned int avb_link_pins[] = { 1495 + /* AVB_LINK */ 1496 + RCAR_GP_PIN(2, 12), 1497 + }; 1498 + static const unsigned int avb_link_mux[] = { 1499 + AVB_LINK_MARK, 1500 + }; 1501 + static const unsigned int avb_magic_pins[] = { 1502 + /* AVB_MAGIC_ */ 1503 + RCAR_GP_PIN(2, 10), 1504 + }; 1505 + static const unsigned int avb_magic_mux[] = { 1506 + AVB_MAGIC_MARK, 1507 + }; 1508 + static const unsigned int avb_phy_int_pins[] = { 1509 + /* AVB_PHY_INT */ 1510 + RCAR_GP_PIN(2, 11), 1511 + }; 1512 + static const unsigned int avb_phy_int_mux[] = { 1513 + AVB_PHY_INT_MARK, 1514 + }; 1515 + static const unsigned int avb_mdc_pins[] = { 1516 + /* AVB_MDC */ 1517 + RCAR_GP_PIN(2, 9), 1518 + }; 1519 + static const unsigned int avb_mdc_mux[] = { 1520 + AVB_MDC_MARK, 1521 + }; 1522 + static const unsigned int avb_avtp_pps_pins[] = { 1523 + /* AVB_AVTP_PPS */ 1524 + RCAR_GP_PIN(2, 6), 1525 + }; 1526 + static const unsigned int avb_avtp_pps_mux[] = { 1527 + AVB_AVTP_PPS_MARK, 1528 + }; 1529 + static const unsigned int avb_avtp_match_a_pins[] = { 1530 + /* AVB_AVTP_MATCH_A */ 1531 + RCAR_GP_PIN(2, 13), 1532 + }; 1533 + static const unsigned int avb_avtp_match_a_mux[] = { 1534 + AVB_AVTP_MATCH_A_MARK, 1535 + }; 1536 + static const unsigned int avb_avtp_capture_a_pins[] = { 1537 + /* AVB_AVTP_CAPTURE_A */ 1538 + RCAR_GP_PIN(2, 14), 1539 + }; 1540 + static const unsigned int avb_avtp_capture_a_mux[] = { 1541 + AVB_AVTP_CAPTURE_A_MARK, 1542 + }; 1543 + static const unsigned int avb_avtp_match_b_pins[] = { 1544 + /* AVB_AVTP_MATCH_B */ 1545 + RCAR_GP_PIN(1, 8), 1546 + }; 1547 + static const unsigned int avb_avtp_match_b_mux[] = { 1548 + AVB_AVTP_MATCH_B_MARK, 1549 + }; 1550 + static const unsigned int avb_avtp_capture_b_pins[] = { 1551 + /* AVB_AVTP_CAPTURE_B */ 1552 + RCAR_GP_PIN(1, 11), 1553 + }; 1554 + static const unsigned int avb_avtp_capture_b_mux[] = { 1555 + AVB_AVTP_CAPTURE_B_MARK, 1556 + }; 1557 + 1493 1558 /* - DRIF0 --------------------------------------------------------------- */ 1494 1559 static const unsigned int drif0_ctrl_a_pins[] = { 1495 1560 /* CLK, SYNC */ ··· 1768 1703 }; 1769 1704 static const unsigned int drif3_data1_b_mux[] = { 1770 1705 RIF3_D1_B_MARK, 1706 + }; 1707 + 1708 + /* - DU --------------------------------------------------------------------- */ 1709 + static const unsigned int du_rgb666_pins[] = { 1710 + /* R[7:2], G[7:2], B[7:2] */ 1711 + RCAR_GP_PIN(0, 15), RCAR_GP_PIN(0, 14), RCAR_GP_PIN(0, 13), 1712 + RCAR_GP_PIN(0, 12), RCAR_GP_PIN(0, 11), RCAR_GP_PIN(0, 10), 1713 + RCAR_GP_PIN(1, 15), RCAR_GP_PIN(1, 14), RCAR_GP_PIN(1, 13), 1714 + RCAR_GP_PIN(1, 12), RCAR_GP_PIN(1, 19), RCAR_GP_PIN(1, 18), 1715 + RCAR_GP_PIN(1, 7), RCAR_GP_PIN(1, 6), RCAR_GP_PIN(1, 5), 1716 + RCAR_GP_PIN(1, 4), RCAR_GP_PIN(1, 3), RCAR_GP_PIN(1, 2), 1717 + }; 1718 + static const unsigned int du_rgb666_mux[] = { 1719 + DU_DR7_MARK, DU_DR6_MARK, DU_DR5_MARK, DU_DR4_MARK, 1720 + DU_DR3_MARK, DU_DR2_MARK, 1721 + DU_DG7_MARK, DU_DG6_MARK, DU_DG5_MARK, DU_DG4_MARK, 1722 + DU_DG3_MARK, DU_DG2_MARK, 1723 + DU_DB7_MARK, DU_DB6_MARK, DU_DB5_MARK, DU_DB4_MARK, 1724 + DU_DB3_MARK, DU_DB2_MARK, 1725 + }; 1726 + static const unsigned int du_rgb888_pins[] = { 1727 + /* R[7:0], G[7:0], B[7:0] */ 1728 + RCAR_GP_PIN(0, 15), RCAR_GP_PIN(0, 14), RCAR_GP_PIN(0, 13), 1729 + RCAR_GP_PIN(0, 12), RCAR_GP_PIN(0, 11), RCAR_GP_PIN(0, 10), 1730 + RCAR_GP_PIN(0, 9), RCAR_GP_PIN(0, 8), 1731 + RCAR_GP_PIN(1, 15), RCAR_GP_PIN(1, 14), RCAR_GP_PIN(1, 13), 1732 + RCAR_GP_PIN(1, 12), RCAR_GP_PIN(1, 19), RCAR_GP_PIN(1, 18), 1733 + RCAR_GP_PIN(1, 17), RCAR_GP_PIN(1, 16), 1734 + RCAR_GP_PIN(1, 7), RCAR_GP_PIN(1, 6), RCAR_GP_PIN(1, 5), 1735 + RCAR_GP_PIN(1, 4), RCAR_GP_PIN(1, 3), RCAR_GP_PIN(1, 2), 1736 + RCAR_GP_PIN(1, 1), RCAR_GP_PIN(1, 0), 1737 + }; 1738 + static const unsigned int du_rgb888_mux[] = { 1739 + DU_DR7_MARK, DU_DR6_MARK, DU_DR5_MARK, DU_DR4_MARK, 1740 + DU_DR3_MARK, DU_DR2_MARK, DU_DR1_MARK, DU_DR0_MARK, 1741 + DU_DG7_MARK, DU_DG6_MARK, DU_DG5_MARK, DU_DG4_MARK, 1742 + DU_DG3_MARK, DU_DG2_MARK, DU_DG1_MARK, DU_DG0_MARK, 1743 + DU_DB7_MARK, DU_DB6_MARK, DU_DB5_MARK, DU_DB4_MARK, 1744 + DU_DB3_MARK, DU_DB2_MARK, DU_DB1_MARK, DU_DB0_MARK, 1745 + }; 1746 + static const unsigned int du_clk_out_0_pins[] = { 1747 + /* CLKOUT */ 1748 + RCAR_GP_PIN(1, 27), 1749 + }; 1750 + static const unsigned int du_clk_out_0_mux[] = { 1751 + DU_DOTCLKOUT0_MARK 1752 + }; 1753 + static const unsigned int du_clk_out_1_pins[] = { 1754 + /* CLKOUT */ 1755 + RCAR_GP_PIN(2, 3), 1756 + }; 1757 + static const unsigned int du_clk_out_1_mux[] = { 1758 + DU_DOTCLKOUT1_MARK 1759 + }; 1760 + static const unsigned int du_sync_pins[] = { 1761 + /* EXVSYNC/VSYNC, EXHSYNC/HSYNC */ 1762 + RCAR_GP_PIN(2, 5), RCAR_GP_PIN(2, 4), 1763 + }; 1764 + static const unsigned int du_sync_mux[] = { 1765 + DU_EXVSYNC_DU_VSYNC_MARK, DU_EXHSYNC_DU_HSYNC_MARK 1766 + }; 1767 + static const unsigned int du_oddf_pins[] = { 1768 + /* EXDISP/EXODDF/EXCDE */ 1769 + RCAR_GP_PIN(2, 2), 1770 + }; 1771 + static const unsigned int du_oddf_mux[] = { 1772 + DU_EXODDF_DU_ODDF_DISP_CDE_MARK, 1773 + }; 1774 + static const unsigned int du_cde_pins[] = { 1775 + /* CDE */ 1776 + RCAR_GP_PIN(2, 0), 1777 + }; 1778 + static const unsigned int du_cde_mux[] = { 1779 + DU_CDE_MARK, 1780 + }; 1781 + static const unsigned int du_disp_pins[] = { 1782 + /* DISP */ 1783 + RCAR_GP_PIN(2, 1), 1784 + }; 1785 + static const unsigned int du_disp_mux[] = { 1786 + DU_DISP_MARK, 1771 1787 }; 1772 1788 1773 1789 /* - I2C -------------------------------------------------------------------- */ ··· 2324 2178 }; 2325 2179 2326 2180 static const struct sh_pfc_pin_group pinmux_groups[] = { 2181 + SH_PFC_PIN_GROUP(avb_link), 2182 + SH_PFC_PIN_GROUP(avb_magic), 2183 + SH_PFC_PIN_GROUP(avb_phy_int), 2184 + SH_PFC_PIN_GROUP(avb_mdc), 2185 + SH_PFC_PIN_GROUP(avb_avtp_pps), 2186 + SH_PFC_PIN_GROUP(avb_avtp_match_a), 2187 + SH_PFC_PIN_GROUP(avb_avtp_capture_a), 2188 + SH_PFC_PIN_GROUP(avb_avtp_match_b), 2189 + SH_PFC_PIN_GROUP(avb_avtp_capture_b), 2327 2190 SH_PFC_PIN_GROUP(drif0_ctrl_a), 2328 2191 SH_PFC_PIN_GROUP(drif0_data0_a), 2329 2192 SH_PFC_PIN_GROUP(drif0_data1_a), ··· 2363 2208 SH_PFC_PIN_GROUP(drif3_ctrl_b), 2364 2209 SH_PFC_PIN_GROUP(drif3_data0_b), 2365 2210 SH_PFC_PIN_GROUP(drif3_data1_b), 2211 + SH_PFC_PIN_GROUP(du_rgb666), 2212 + SH_PFC_PIN_GROUP(du_rgb888), 2213 + SH_PFC_PIN_GROUP(du_clk_out_0), 2214 + SH_PFC_PIN_GROUP(du_clk_out_1), 2215 + SH_PFC_PIN_GROUP(du_sync), 2216 + SH_PFC_PIN_GROUP(du_oddf), 2217 + SH_PFC_PIN_GROUP(du_cde), 2218 + SH_PFC_PIN_GROUP(du_disp), 2366 2219 SH_PFC_PIN_GROUP(i2c1_a), 2367 2220 SH_PFC_PIN_GROUP(i2c1_b), 2368 2221 SH_PFC_PIN_GROUP(i2c2_a), ··· 2435 2272 SH_PFC_PIN_GROUP(sdhi3_ds), 2436 2273 }; 2437 2274 2275 + static const char * const avb_groups[] = { 2276 + "avb_link", 2277 + "avb_magic", 2278 + "avb_phy_int", 2279 + "avb_mdc", 2280 + "avb_avtp_pps", 2281 + "avb_avtp_match_a", 2282 + "avb_avtp_capture_a", 2283 + "avb_avtp_match_b", 2284 + "avb_avtp_capture_b", 2285 + }; 2286 + 2438 2287 static const char * const drif0_groups[] = { 2439 2288 "drif0_ctrl_a", 2440 2289 "drif0_data0_a", ··· 2487 2312 "drif3_ctrl_b", 2488 2313 "drif3_data0_b", 2489 2314 "drif3_data1_b", 2315 + }; 2316 + 2317 + static const char * const du_groups[] = { 2318 + "du_rgb666", 2319 + "du_rgb888", 2320 + "du_clk_out_0", 2321 + "du_clk_out_1", 2322 + "du_sync", 2323 + "du_oddf", 2324 + "du_cde", 2325 + "du_disp", 2490 2326 }; 2491 2327 2492 2328 static const char * const i2c1_groups[] = { ··· 2605 2419 }; 2606 2420 2607 2421 static const struct sh_pfc_function pinmux_functions[] = { 2422 + SH_PFC_FUNCTION(avb), 2608 2423 SH_PFC_FUNCTION(drif0), 2609 2424 SH_PFC_FUNCTION(drif1), 2610 2425 SH_PFC_FUNCTION(drif2), 2611 2426 SH_PFC_FUNCTION(drif3), 2427 + SH_PFC_FUNCTION(du), 2612 2428 SH_PFC_FUNCTION(i2c1), 2613 2429 SH_PFC_FUNCTION(i2c2), 2614 2430 SH_PFC_FUNCTION(i2c6),
+2 -1
drivers/pinctrl/sh-pfc/pinctrl.c
··· 570 570 571 571 switch (param) { 572 572 case PIN_CONFIG_BIAS_DISABLE: 573 - return true; 573 + return pin->configs & 574 + (SH_PFC_PIN_CFG_PULL_UP | SH_PFC_PIN_CFG_PULL_DOWN); 574 575 575 576 case PIN_CONFIG_BIAS_PULL_UP: 576 577 return pin->configs & SH_PFC_PIN_CFG_PULL_UP;
+14
drivers/pinctrl/sh-pfc/sh_pfc.h
··· 189 189 unsigned long size; 190 190 }; 191 191 192 + struct sh_pfc_bias_info { 193 + u16 pin; 194 + u16 reg : 11; 195 + u16 bit : 5; 196 + }; 197 + 192 198 struct sh_pfc_pin_range; 193 199 194 200 struct sh_pfc { ··· 544 538 .pin = PIN_NUMBER(row, col), \ 545 539 .name = __stringify(PIN_##_name), \ 546 540 .configs = SH_PFC_PIN_CFG_NO_GPIO, \ 541 + } 542 + 543 + /* SH_PFC_PIN_NAMED_CFG - Expand to a sh_pfc_pin entry with the given name */ 544 + #define SH_PFC_PIN_NAMED_CFG(row, col, _name, cfgs) \ 545 + { \ 546 + .pin = PIN_NUMBER(row, col), \ 547 + .name = __stringify(PIN_##_name), \ 548 + .configs = SH_PFC_PIN_CFG_NO_GPIO | cfgs, \ 547 549 } 548 550 549 551 /* PINMUX_DATA_ALL - Expand to a list of PORT_name_DATA, PORT_name_FN0,