19
19
#include "sh_pfc.h"
20
20
21
21
#define CPU_ALL_GP (fn , sfx ) \
22
- PORT_GP_CFG_22(0, fn, sfx, SH_PFC_PIN_CFG_IO_VOLTAGE), \
23
- PORT_GP_28(1, fn, sfx), \
24
- PORT_GP_CFG_30(2, fn, sfx, SH_PFC_PIN_CFG_IO_VOLTAGE), \
25
- PORT_GP_CFG_17(3, fn, sfx, SH_PFC_PIN_CFG_IO_VOLTAGE), \
26
- PORT_GP_25(4, fn, sfx), \
27
- PORT_GP_15(5, fn, sfx)
22
+ PORT_GP_CFG_22(0, fn, sfx, SH_PFC_PIN_CFG_IO_VOLTAGE | SH_PFC_PIN_CFG_PULL_UP_DOWN), \
23
+ PORT_GP_CFG_28(1, fn, sfx, SH_PFC_PIN_CFG_PULL_UP_DOWN), \
24
+ PORT_GP_CFG_30(2, fn, sfx, SH_PFC_PIN_CFG_IO_VOLTAGE | SH_PFC_PIN_CFG_PULL_UP_DOWN), \
25
+ PORT_GP_CFG_17(3, fn, sfx, SH_PFC_PIN_CFG_IO_VOLTAGE | SH_PFC_PIN_CFG_PULL_UP_DOWN), \
26
+ PORT_GP_CFG_25(4, fn, sfx, SH_PFC_PIN_CFG_PULL_UP_DOWN), \
27
+ PORT_GP_CFG_15(5, fn, sfx, SH_PFC_PIN_CFG_PULL_UP_DOWN)
28
+
29
+ #define CPU_ALL_NOGP (fn ) \
30
+ PIN_NOGP_CFG(DCUTCK_LPDCLK, "DCUTCK_LPDCLK", fn, SH_PFC_PIN_CFG_PULL_UP_DOWN), \
31
+ PIN_NOGP_CFG(DCUTDI_LPDI, "DCUTDI_LPDI", fn, SH_PFC_PIN_CFG_PULL_UP_DOWN), \
32
+ PIN_NOGP_CFG(DCUTMS, "DCUTMS", fn, SH_PFC_PIN_CFG_PULL_UP_DOWN), \
33
+ PIN_NOGP_CFG(DCUTRST_N, "DCUTRST#", fn, SH_PFC_PIN_CFG_PULL_UP_DOWN), \
34
+ PIN_NOGP_CFG(DU_DOTCLKIN, "DU_DOTCLKIN", fn, SH_PFC_PIN_CFG_PULL_UP_DOWN), \
35
+ PIN_NOGP_CFG(EXTALR, "EXTALR", fn, SH_PFC_PIN_CFG_PULL_UP_DOWN), \
36
+ PIN_NOGP_CFG(FSCLKST, "FSCLKST", fn, SH_PFC_PIN_CFG_PULL_UP_DOWN), \
37
+ PIN_NOGP_CFG(FSCLKST_N, "FSCLKST#", fn, SH_PFC_PIN_CFG_PULL_UP_DOWN), \
38
+ PIN_NOGP_CFG(PRESETOUT_N, "PRESETOUT#", fn, SH_PFC_PIN_CFG_PULL_UP_DOWN)
28
39
29
40
/*
30
41
* F_() : just information
@@ -830,8 +841,17 @@ static const u16 pinmux_data[] = {
830
841
PINMUX_IPSR_GPSR (IP10_19_16 , FSO_TOE_N ),
831
842
};
832
843
844
+ /*
845
+ * Pins not associated with a GPIO port.
846
+ */
847
+ enum {
848
+ GP_ASSIGN_LAST (),
849
+ NOGP_ALL (),
850
+ };
851
+
833
852
static const struct sh_pfc_pin pinmux_pins [] = {
834
853
PINMUX_GPIO_GP_ALL (),
854
+ PINMUX_NOGP_ALL (),
835
855
};
836
856
837
857
/* - AVB -------------------------------------------------------------------- */
@@ -2945,8 +2965,184 @@ static int r8a77980_pin_to_pocctrl(struct sh_pfc *pfc, unsigned int pin,
2945
2965
return - EINVAL ;
2946
2966
}
2947
2967
2968
+ static const struct pinmux_bias_reg pinmux_bias_regs [] = {
2969
+ { PINMUX_BIAS_REG ("PUEN0" , 0xe6060400 , "PUD0" , 0xe6060440 ) {
2970
+ [ 0 ] = RCAR_GP_PIN (0 , 0 ), /* DU_DR2 */
2971
+ [ 1 ] = RCAR_GP_PIN (0 , 1 ), /* DU_DR3 */
2972
+ [ 2 ] = RCAR_GP_PIN (0 , 2 ), /* DU_DR4 */
2973
+ [ 3 ] = RCAR_GP_PIN (0 , 3 ), /* DU_DR5 */
2974
+ [ 4 ] = RCAR_GP_PIN (0 , 4 ), /* DU_DR6 */
2975
+ [ 5 ] = RCAR_GP_PIN (0 , 5 ), /* DU_DR7 */
2976
+ [ 6 ] = RCAR_GP_PIN (0 , 6 ), /* DU_DG2 */
2977
+ [ 7 ] = RCAR_GP_PIN (0 , 7 ), /* DU_DG3 */
2978
+ [ 8 ] = RCAR_GP_PIN (0 , 8 ), /* DU_DG4 */
2979
+ [ 9 ] = RCAR_GP_PIN (0 , 9 ), /* DU_DG5 */
2980
+ [10 ] = RCAR_GP_PIN (0 , 10 ), /* DU_DG6 */
2981
+ [11 ] = RCAR_GP_PIN (0 , 11 ), /* DU_DG7 */
2982
+ [12 ] = RCAR_GP_PIN (0 , 12 ), /* DU_DB2 */
2983
+ [13 ] = RCAR_GP_PIN (0 , 13 ), /* DU_DB3 */
2984
+ [14 ] = RCAR_GP_PIN (0 , 14 ), /* DU_DB4 */
2985
+ [15 ] = RCAR_GP_PIN (0 , 15 ), /* DU_DB5 */
2986
+ [16 ] = RCAR_GP_PIN (0 , 16 ), /* DU_DB6 */
2987
+ [17 ] = RCAR_GP_PIN (0 , 17 ), /* DU_DB7 */
2988
+ [18 ] = RCAR_GP_PIN (0 , 18 ), /* DU_DOTCLKOUT */
2989
+ [19 ] = RCAR_GP_PIN (0 , 19 ), /* DU_EXHSYNC/DU_HSYNC */
2990
+ [20 ] = RCAR_GP_PIN (0 , 20 ), /* DU_EXVSYNC/DU_VSYNC */
2991
+ [21 ] = RCAR_GP_PIN (0 , 21 ), /* DU_EXODDF/DU_ODDF/DISP/CDE */
2992
+ [22 ] = SH_PFC_PIN_NONE ,
2993
+ [23 ] = SH_PFC_PIN_NONE ,
2994
+ [24 ] = PIN_DU_DOTCLKIN , /* DU_DOTCLKIN */
2995
+ [25 ] = SH_PFC_PIN_NONE ,
2996
+ [26 ] = PIN_PRESETOUT_N , /* PRESETOUT# */
2997
+ [27 ] = SH_PFC_PIN_NONE ,
2998
+ [28 ] = SH_PFC_PIN_NONE ,
2999
+ [29 ] = SH_PFC_PIN_NONE ,
3000
+ [30 ] = PIN_EXTALR , /* EXTALR */
3001
+ [31 ] = PIN_FSCLKST_N , /* FSCLKST# */
3002
+ } },
3003
+ { PINMUX_BIAS_REG ("PUEN1 ", 0xe6060404 , "PUD1 ", 0xe6060444 ) {
3004
+ [ 0 ] = PIN_FSCLKST , /* FSCLKST */
3005
+ [ 1 ] = SH_PFC_PIN_NONE ,
3006
+ [ 2 ] = RCAR_GP_PIN (1 , 0 ), /* IRQ0 */
3007
+ [ 3 ] = PIN_DCUTRST_N , /* DCUTRST# */
3008
+ [ 4 ] = PIN_DCUTCK_LPDCLK , /* DCUTCK_LPDCLK */
3009
+ [ 5 ] = PIN_DCUTMS , /* DCUTMS */
3010
+ [ 6 ] = PIN_DCUTDI_LPDI , /* DCUTDI_LPDI */
3011
+ [ 7 ] = SH_PFC_PIN_NONE ,
3012
+ [ 8 ] = RCAR_GP_PIN (2 , 0 ), /* VI0_CLK */
3013
+ [ 9 ] = RCAR_GP_PIN (2 , 1 ), /* VI0_CLKENB */
3014
+ [10 ] = RCAR_GP_PIN (2 , 2 ), /* VI0_HSYNC# */
3015
+ [11 ] = RCAR_GP_PIN (2 , 3 ), /* VI0_VSYNC# */
3016
+ [12 ] = RCAR_GP_PIN (2 , 4 ), /* VI0_DATA0 */
3017
+ [13 ] = RCAR_GP_PIN (2 , 5 ), /* VI0_DATA1 */
3018
+ [14 ] = RCAR_GP_PIN (2 , 6 ), /* VI0_DATA2 */
3019
+ [15 ] = RCAR_GP_PIN (2 , 7 ), /* VI0_DATA3 */
3020
+ [16 ] = RCAR_GP_PIN (2 , 8 ), /* VI0_DATA4 */
3021
+ [17 ] = RCAR_GP_PIN (2 , 9 ), /* VI0_DATA5 */
3022
+ [18 ] = RCAR_GP_PIN (2 , 10 ), /* VI0_DATA6 */
3023
+ [19 ] = RCAR_GP_PIN (2 , 11 ), /* VI0_DATA7 */
3024
+ [20 ] = RCAR_GP_PIN (2 , 12 ), /* VI0_DATA8 */
3025
+ [21 ] = RCAR_GP_PIN (2 , 13 ), /* VI0_DATA9 */
3026
+ [22 ] = RCAR_GP_PIN (2 , 14 ), /* VI0_DATA10 */
3027
+ [23 ] = RCAR_GP_PIN (2 , 15 ), /* VI0_DATA11 */
3028
+ [24 ] = RCAR_GP_PIN (2 , 16 ), /* VI0_FIELD */
3029
+ [25 ] = RCAR_GP_PIN (3 , 0 ), /* VI1_CLK */
3030
+ [26 ] = RCAR_GP_PIN (3 , 1 ), /* VI1_CLKENB */
3031
+ [27 ] = RCAR_GP_PIN (3 , 2 ), /* VI1_HSYNC# */
3032
+ [28 ] = RCAR_GP_PIN (3 , 3 ), /* VI1_VSYNC# */
3033
+ [29 ] = RCAR_GP_PIN (3 , 4 ), /* VI1_DATA0 */
3034
+ [30 ] = RCAR_GP_PIN (3 , 5 ), /* VI1_DATA1 */
3035
+ [31 ] = RCAR_GP_PIN (3 , 6 ), /* VI1_DATA2 */
3036
+ } },
3037
+ { PINMUX_BIAS_REG ("PUEN2" , 0xe6060408 , "PUD2" , 0xe6060448 ) {
3038
+ [ 0 ] = RCAR_GP_PIN (3 , 7 ), /* VI1_DATA3 */
3039
+ [ 1 ] = RCAR_GP_PIN (3 , 8 ), /* VI1_DATA4 */
3040
+ [ 2 ] = RCAR_GP_PIN (3 , 9 ), /* VI1_DATA5 */
3041
+ [ 3 ] = RCAR_GP_PIN (3 , 10 ), /* VI1_DATA6 */
3042
+ [ 4 ] = RCAR_GP_PIN (3 , 11 ), /* VI1_DATA7 */
3043
+ [ 5 ] = RCAR_GP_PIN (3 , 12 ), /* VI1_DATA8 */
3044
+ [ 6 ] = RCAR_GP_PIN (3 , 13 ), /* VI1_DATA9 */
3045
+ [ 7 ] = RCAR_GP_PIN (3 , 14 ), /* VI1_DATA10 */
3046
+ [ 8 ] = RCAR_GP_PIN (3 , 15 ), /* VI1_DATA11 */
3047
+ [ 9 ] = RCAR_GP_PIN (3 , 16 ), /* VI1_FIELD */
3048
+ [10 ] = RCAR_GP_PIN (4 , 0 ), /* SCL0 */
3049
+ [11 ] = RCAR_GP_PIN (4 , 1 ), /* SDA0 */
3050
+ [12 ] = RCAR_GP_PIN (4 , 2 ), /* SCL1 */
3051
+ [13 ] = RCAR_GP_PIN (4 , 3 ), /* SDA1 */
3052
+ [14 ] = RCAR_GP_PIN (4 , 4 ), /* SCL2 */
3053
+ [15 ] = RCAR_GP_PIN (4 , 5 ), /* SDA2 */
3054
+ [16 ] = RCAR_GP_PIN (1 , 1 ), /* AVB_RX_CTL */
3055
+ [17 ] = RCAR_GP_PIN (1 , 2 ), /* AVB_RXC */
3056
+ [18 ] = RCAR_GP_PIN (1 , 3 ), /* AVB_RD0 */
3057
+ [19 ] = RCAR_GP_PIN (1 , 4 ), /* AVB_RD1 */
3058
+ [20 ] = RCAR_GP_PIN (1 , 5 ), /* AVB_RD2 */
3059
+ [21 ] = RCAR_GP_PIN (1 , 6 ), /* AVB_RD3 */
3060
+ [22 ] = RCAR_GP_PIN (1 , 7 ), /* AVB_TX_CTL */
3061
+ [23 ] = RCAR_GP_PIN (1 , 8 ), /* AVB_TXC */
3062
+ [24 ] = RCAR_GP_PIN (1 , 9 ), /* AVB_TD0 */
3063
+ [25 ] = RCAR_GP_PIN (1 , 10 ), /* AVB_TD1 */
3064
+ [26 ] = RCAR_GP_PIN (1 , 11 ), /* AVB_TD2 */
3065
+ [27 ] = RCAR_GP_PIN (1 , 12 ), /* AVB_TD3 */
3066
+ [28 ] = RCAR_GP_PIN (1 , 13 ), /* AVB_TXCREFCLK */
3067
+ [29 ] = RCAR_GP_PIN (1 , 14 ), /* AVB_MDIO */
3068
+ [30 ] = RCAR_GP_PIN (1 , 15 ), /* AVB_MDC */
3069
+ [31 ] = RCAR_GP_PIN (1 , 16 ), /* AVB_MAGIC */
3070
+ } },
3071
+ { PINMUX_BIAS_REG ("PUEN3" , 0xe606040c , "PUD3" , 0xe606044c ) {
3072
+ [ 0 ] = RCAR_GP_PIN (1 , 17 ), /* AVB_PHY_INT */
3073
+ [ 1 ] = RCAR_GP_PIN (1 , 18 ), /* AVB_LINK */
3074
+ [ 2 ] = RCAR_GP_PIN (1 , 19 ), /* AVB_AVTP_MATCH */
3075
+ [ 3 ] = RCAR_GP_PIN (1 , 20 ), /* AVTP_CAPTURE */
3076
+ [ 4 ] = RCAR_GP_PIN (4 , 6 ), /* GETHER_RX_CTL */
3077
+ [ 5 ] = RCAR_GP_PIN (4 , 7 ), /* GETHER_RXC */
3078
+ [ 6 ] = RCAR_GP_PIN (4 , 8 ), /* GETHER_RD0 */
3079
+ [ 7 ] = RCAR_GP_PIN (4 , 9 ), /* GETHER_RD1 */
3080
+ [ 8 ] = RCAR_GP_PIN (4 , 10 ), /* GETHER_RD2 */
3081
+ [ 9 ] = RCAR_GP_PIN (4 , 11 ), /* GETHER_RD3 */
3082
+ [10 ] = RCAR_GP_PIN (4 , 12 ), /* GETHER_TX_CTL */
3083
+ [11 ] = RCAR_GP_PIN (4 , 13 ), /* GETHER_TXC */
3084
+ [12 ] = RCAR_GP_PIN (4 , 14 ), /* GETHER_TD0 */
3085
+ [13 ] = RCAR_GP_PIN (4 , 15 ), /* GETHER_TD1 */
3086
+ [14 ] = RCAR_GP_PIN (4 , 16 ), /* GETHER_TD2 */
3087
+ [15 ] = RCAR_GP_PIN (4 , 17 ), /* GETHER_TD3 */
3088
+ [16 ] = RCAR_GP_PIN (4 , 18 ), /* GETHER_TXCREFCLK */
3089
+ [17 ] = RCAR_GP_PIN (4 , 19 ), /* GETHER_TXCREFCLK_MEGA */
3090
+ [18 ] = RCAR_GP_PIN (4 , 20 ), /* GETHER_MDIO_A */
3091
+ [19 ] = RCAR_GP_PIN (4 , 21 ), /* GETHER_MDC_A */
3092
+ [20 ] = RCAR_GP_PIN (4 , 22 ), /* GETHER_MAGIC */
3093
+ [21 ] = RCAR_GP_PIN (4 , 23 ), /* GETHER_PHY_INT_A */
3094
+ [22 ] = RCAR_GP_PIN (4 , 24 ), /* GETHER_LINK_A */
3095
+ [23 ] = RCAR_GP_PIN (1 , 21 ), /* CANFD0_TX_A */
3096
+ [24 ] = RCAR_GP_PIN (1 , 22 ), /* CANFD0_RX_A */
3097
+ [25 ] = RCAR_GP_PIN (1 , 23 ), /* CANFD1_TX */
3098
+ [26 ] = RCAR_GP_PIN (1 , 24 ), /* CANFD1_RX */
3099
+ [27 ] = RCAR_GP_PIN (1 , 25 ), /* CAN_CLK_A */
3100
+ [28 ] = RCAR_GP_PIN (5 , 0 ), /* QSPI0_SPCLK */
3101
+ [29 ] = RCAR_GP_PIN (5 , 1 ), /* QSPI0_MOSI_IO0 */
3102
+ [30 ] = RCAR_GP_PIN (5 , 2 ), /* QSPI0_MISO_IO1 */
3103
+ [31 ] = RCAR_GP_PIN (5 , 3 ), /* QSPI0_IO2 */
3104
+ } },
3105
+ { PINMUX_BIAS_REG ("PUEN4" , 0xe6060410 , "PUD4" , 0xe6060450 ) {
3106
+ [ 0 ] = RCAR_GP_PIN (5 , 4 ), /* QSPI0_IO3 */
3107
+ [ 1 ] = RCAR_GP_PIN (5 , 5 ), /* QSPI0_SSL */
3108
+ [ 2 ] = RCAR_GP_PIN (5 , 6 ), /* QSPI1_SPCLK */
3109
+ [ 3 ] = RCAR_GP_PIN (5 , 7 ), /* QSPI1_MOSI_IO0 */
3110
+ [ 4 ] = RCAR_GP_PIN (5 , 8 ), /* QSPI1_MISO_IO1 */
3111
+ [ 5 ] = RCAR_GP_PIN (5 , 9 ), /* QSPI1_IO2 */
3112
+ [ 6 ] = RCAR_GP_PIN (5 , 10 ), /* QSPI1_IO3 */
3113
+ [ 7 ] = RCAR_GP_PIN (5 , 11 ), /* QSPI1_SSL */
3114
+ [ 8 ] = RCAR_GP_PIN (5 , 12 ), /* RPC_RESET# */
3115
+ [ 9 ] = RCAR_GP_PIN (5 , 13 ), /* RPC_WP# */
3116
+ [10 ] = RCAR_GP_PIN (5 , 14 ), /* RPC_INT# */
3117
+ [11 ] = RCAR_GP_PIN (1 , 26 ), /* DIGRF_CLKIN */
3118
+ [12 ] = RCAR_GP_PIN (1 , 27 ), /* DIGRF_CLKOUT */
3119
+ [13 ] = RCAR_GP_PIN (2 , 17 ), /* IRQ4 */
3120
+ [14 ] = RCAR_GP_PIN (2 , 18 ), /* IRQ5 */
3121
+ [15 ] = RCAR_GP_PIN (2 , 25 ), /* SCL3 */
3122
+ [16 ] = RCAR_GP_PIN (2 , 26 ), /* SDA3 */
3123
+ [17 ] = RCAR_GP_PIN (2 , 19 ), /* MSIOF0_RXD */
3124
+ [18 ] = RCAR_GP_PIN (2 , 20 ), /* MSIOF0_TXD */
3125
+ [19 ] = RCAR_GP_PIN (2 , 21 ), /* MSIOF0_SCK */
3126
+ [20 ] = RCAR_GP_PIN (2 , 22 ), /* MSIOF0_SYNC */
3127
+ [21 ] = RCAR_GP_PIN (2 , 23 ), /* MSIOF0_SS1 */
3128
+ [22 ] = RCAR_GP_PIN (2 , 24 ), /* MSIOF0_SS2 */
3129
+ [23 ] = RCAR_GP_PIN (2 , 27 ), /* FSO_CFE_0# */
3130
+ [24 ] = RCAR_GP_PIN (2 , 28 ), /* FSO_CFE_1# */
3131
+ [25 ] = RCAR_GP_PIN (2 , 29 ), /* FSO_TOE# */
3132
+ [26 ] = SH_PFC_PIN_NONE ,
3133
+ [27 ] = SH_PFC_PIN_NONE ,
3134
+ [28 ] = SH_PFC_PIN_NONE ,
3135
+ [29 ] = SH_PFC_PIN_NONE ,
3136
+ [30 ] = SH_PFC_PIN_NONE ,
3137
+ [31 ] = SH_PFC_PIN_NONE ,
3138
+ } },
3139
+ { /* sentinel */ }
3140
+ };
3141
+
2948
3142
static const struct sh_pfc_soc_operations pinmux_ops = {
2949
3143
.pin_to_pocctrl = r8a77980_pin_to_pocctrl ,
3144
+ .get_bias = rcar_pinmux_get_bias ,
3145
+ .set_bias = rcar_pinmux_set_bias ,
2950
3146
};
2951
3147
2952
3148
const struct sh_pfc_soc_info r8a77980_pinmux_info = {
@@ -2964,6 +3160,7 @@ const struct sh_pfc_soc_info r8a77980_pinmux_info = {
2964
3160
.nr_functions = ARRAY_SIZE (pinmux_functions ),
2965
3161
2966
3162
.cfg_regs = pinmux_config_regs ,
3163
+ .bias_regs = pinmux_bias_regs ,
2967
3164
.ioctrl_regs = pinmux_ioctrl_regs ,
2968
3165
2969
3166
.pinmux_data = pinmux_data ,
0 commit comments