aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl/sh-pfc
diff options
context:
space:
mode:
authorValentine Barshak <valentine.barshak@cogentembedded.com>2013-12-10 13:20:24 -0500
committerLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>2013-12-10 14:42:33 -0500
commit64fe8abc7336e17f977bb38c4c261d24bfc5da17 (patch)
tree58100f2a99c8e66fb887e73d8495c287118f5126 /drivers/pinctrl/sh-pfc
parenta9e4c7bb466b34b19ca71ee7383ca23bd37a88c5 (diff)
pinctrl: sh-pfc: pfc-r8a7790: Reorganize VIN0 data pins
This reorganizes and renames VIN0 data pin groups to cover all possible configurations. There's total of eight data pin groups, one per each configuration. Most of the groups share the same pin/mux array. Only the 18-bit configuration needs a separate pin/mux array since in combines interleaved data pins. Signed-off-by: Valentine Barshak <valentine.barshak@cogentembedded.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'drivers/pinctrl/sh-pfc')
-rw-r--r--drivers/pinctrl/sh-pfc/pfc-r8a7790.c125
1 files changed, 95 insertions, 30 deletions
diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a7790.c b/drivers/pinctrl/sh-pfc/pfc-r8a7790.c
index 81ff4bf72264..11e12d61de9b 100644
--- a/drivers/pinctrl/sh-pfc/pfc-r8a7790.c
+++ b/drivers/pinctrl/sh-pfc/pfc-r8a7790.c
@@ -3247,36 +3247,91 @@ static const unsigned int usb2_pins[] = {
3247static const unsigned int usb2_mux[] = { 3247static const unsigned int usb2_mux[] = {
3248 USB2_PWEN_MARK, USB2_OVC_MARK, 3248 USB2_PWEN_MARK, USB2_OVC_MARK,
3249}; 3249};
3250/* - VIN0 ------------------------------------------------------------------- */ 3250
3251static const unsigned int vin0_data_g_pins[] = { 3251union vin_data {
3252 RCAR_GP_PIN(0, 8), RCAR_GP_PIN(0, 9), RCAR_GP_PIN(0, 10), 3252 unsigned int data24[24];
3253 RCAR_GP_PIN(0, 11), RCAR_GP_PIN(0, 0), RCAR_GP_PIN(0, 1), 3253 unsigned int data20[20];
3254 RCAR_GP_PIN(0, 2), RCAR_GP_PIN(0, 3), 3254 unsigned int data16[16];
3255}; 3255 unsigned int data12[12];
3256static const unsigned int vin0_data_g_mux[] = { 3256 unsigned int data10[10];
3257 VI0_G0_MARK, VI0_G1_MARK, VI0_G2_MARK, 3257 unsigned int data8[8];
3258 VI0_G3_MARK, VI0_G4_MARK, VI0_G5_MARK, 3258 unsigned int data4[4];
3259 VI0_G6_MARK, VI0_G7_MARK,
3260}; 3259};
3261static const unsigned int vin0_data_r_pins[] = { 3260
3262 RCAR_GP_PIN(0, 4), RCAR_GP_PIN(0, 5), RCAR_GP_PIN(0, 6), 3261#define VIN_DATA_PIN_GROUP(n, s) \
3263 RCAR_GP_PIN(0, 7), RCAR_GP_PIN(0, 24), RCAR_GP_PIN(0, 25), 3262 { \
3264 RCAR_GP_PIN(0, 26), RCAR_GP_PIN(1, 11), 3263 .name = #n#s, \
3264 .pins = n##_pins.data##s, \
3265 .mux = n##_mux.data##s, \
3266 .nr_pins = ARRAY_SIZE(n##_pins.data##s), \
3267 }
3268
3269/* - VIN0 ------------------------------------------------------------------- */
3270static const union vin_data vin0_data_pins = {
3271 .data24 = {
3272 /* B */
3273 RCAR_GP_PIN(2, 1), RCAR_GP_PIN(2, 2),
3274 RCAR_GP_PIN(2, 3), RCAR_GP_PIN(2, 4),
3275 RCAR_GP_PIN(2, 5), RCAR_GP_PIN(2, 6),
3276 RCAR_GP_PIN(2, 7), RCAR_GP_PIN(2, 8),
3277 /* G */
3278 RCAR_GP_PIN(0, 8), RCAR_GP_PIN(0, 9),
3279 RCAR_GP_PIN(0, 10), RCAR_GP_PIN(0, 11),
3280 RCAR_GP_PIN(0, 0), RCAR_GP_PIN(0, 1),
3281 RCAR_GP_PIN(0, 2), RCAR_GP_PIN(0, 3),
3282 /* R */
3283 RCAR_GP_PIN(0, 4), RCAR_GP_PIN(0, 5),
3284 RCAR_GP_PIN(0, 6), RCAR_GP_PIN(0, 7),
3285 RCAR_GP_PIN(0, 24), RCAR_GP_PIN(0, 25),
3286 RCAR_GP_PIN(0, 26), RCAR_GP_PIN(1, 11),
3287 },
3265}; 3288};
3266static const unsigned int vin0_data_r_mux[] = { 3289static const union vin_data vin0_data_mux = {
3267 VI0_R0_MARK, VI0_R1_MARK, VI0_R2_MARK, 3290 .data24 = {
3268 VI0_R3_MARK, VI0_R4_MARK, VI0_R5_MARK, 3291 /* B */
3269 VI0_R6_MARK, VI0_R7_MARK, 3292 VI0_DATA0_VI0_B0_MARK, VI0_DATA1_VI0_B1_MARK,
3293 VI0_DATA2_VI0_B2_MARK, VI0_DATA3_VI0_B3_MARK,
3294 VI0_DATA4_VI0_B4_MARK, VI0_DATA5_VI0_B5_MARK,
3295 VI0_DATA6_VI0_B6_MARK, VI0_DATA7_VI0_B7_MARK,
3296 /* G */
3297 VI0_G0_MARK, VI0_G1_MARK,
3298 VI0_G2_MARK, VI0_G3_MARK,
3299 VI0_G4_MARK, VI0_G5_MARK,
3300 VI0_G6_MARK, VI0_G7_MARK,
3301 /* R */
3302 VI0_R0_MARK, VI0_R1_MARK,
3303 VI0_R2_MARK, VI0_R3_MARK,
3304 VI0_R4_MARK, VI0_R5_MARK,
3305 VI0_R6_MARK, VI0_R7_MARK,
3306 },
3270}; 3307};
3271static const unsigned int vin0_data_b_pins[] = { 3308static const unsigned int vin0_data18_pins[] = {
3272 RCAR_GP_PIN(2, 1), RCAR_GP_PIN(2, 2), RCAR_GP_PIN(2, 3), 3309 /* B */
3273 RCAR_GP_PIN(2, 4), RCAR_GP_PIN(2, 5), RCAR_GP_PIN(2, 6), 3310 RCAR_GP_PIN(2, 3), RCAR_GP_PIN(2, 4),
3311 RCAR_GP_PIN(2, 5), RCAR_GP_PIN(2, 6),
3274 RCAR_GP_PIN(2, 7), RCAR_GP_PIN(2, 8), 3312 RCAR_GP_PIN(2, 7), RCAR_GP_PIN(2, 8),
3313 /* G */
3314 RCAR_GP_PIN(0, 10), RCAR_GP_PIN(0, 11),
3315 RCAR_GP_PIN(0, 0), RCAR_GP_PIN(0, 1),
3316 RCAR_GP_PIN(0, 2), RCAR_GP_PIN(0, 3),
3317 /* R */
3318 RCAR_GP_PIN(0, 6), RCAR_GP_PIN(0, 7),
3319 RCAR_GP_PIN(0, 24), RCAR_GP_PIN(0, 25),
3320 RCAR_GP_PIN(0, 26), RCAR_GP_PIN(1, 11),
3275}; 3321};
3276static const unsigned int vin0_data_b_mux[] = { 3322static const unsigned int vin0_data18_mux[] = {
3277 VI0_DATA0_VI0_B0_MARK, VI0_DATA1_VI0_B1_MARK, VI0_DATA2_VI0_B2_MARK, 3323 /* B */
3278 VI0_DATA3_VI0_B3_MARK, VI0_DATA4_VI0_B4_MARK, VI0_DATA5_VI0_B5_MARK, 3324 VI0_DATA2_VI0_B2_MARK, VI0_DATA3_VI0_B3_MARK,
3325 VI0_DATA4_VI0_B4_MARK, VI0_DATA5_VI0_B5_MARK,
3279 VI0_DATA6_VI0_B6_MARK, VI0_DATA7_VI0_B7_MARK, 3326 VI0_DATA6_VI0_B6_MARK, VI0_DATA7_VI0_B7_MARK,
3327 /* G */
3328 VI0_G2_MARK, VI0_G3_MARK,
3329 VI0_G4_MARK, VI0_G5_MARK,
3330 VI0_G6_MARK, VI0_G7_MARK,
3331 /* R */
3332 VI0_R2_MARK, VI0_R3_MARK,
3333 VI0_R4_MARK, VI0_R5_MARK,
3334 VI0_R6_MARK, VI0_R7_MARK,
3280}; 3335};
3281static const unsigned int vin0_sync_pins[] = { 3336static const unsigned int vin0_sync_pins[] = {
3282 RCAR_GP_PIN(0, 12), /* HSYNC */ 3337 RCAR_GP_PIN(0, 12), /* HSYNC */
@@ -3528,9 +3583,14 @@ static const struct sh_pfc_pin_group pinmux_groups[] = {
3528 SH_PFC_PIN_GROUP(usb0), 3583 SH_PFC_PIN_GROUP(usb0),
3529 SH_PFC_PIN_GROUP(usb1), 3584 SH_PFC_PIN_GROUP(usb1),
3530 SH_PFC_PIN_GROUP(usb2), 3585 SH_PFC_PIN_GROUP(usb2),
3531 SH_PFC_PIN_GROUP(vin0_data_g), 3586 VIN_DATA_PIN_GROUP(vin0_data, 24),
3532 SH_PFC_PIN_GROUP(vin0_data_r), 3587 VIN_DATA_PIN_GROUP(vin0_data, 20),
3533 SH_PFC_PIN_GROUP(vin0_data_b), 3588 SH_PFC_PIN_GROUP(vin0_data18),
3589 VIN_DATA_PIN_GROUP(vin0_data, 16),
3590 VIN_DATA_PIN_GROUP(vin0_data, 12),
3591 VIN_DATA_PIN_GROUP(vin0_data, 10),
3592 VIN_DATA_PIN_GROUP(vin0_data, 8),
3593 VIN_DATA_PIN_GROUP(vin0_data, 4),
3534 SH_PFC_PIN_GROUP(vin0_sync), 3594 SH_PFC_PIN_GROUP(vin0_sync),
3535 SH_PFC_PIN_GROUP(vin0_field), 3595 SH_PFC_PIN_GROUP(vin0_field),
3536 SH_PFC_PIN_GROUP(vin0_clkenb), 3596 SH_PFC_PIN_GROUP(vin0_clkenb),
@@ -3853,9 +3913,14 @@ static const char * const usb2_groups[] = {
3853}; 3913};
3854 3914
3855static const char * const vin0_groups[] = { 3915static const char * const vin0_groups[] = {
3856 "vin0_data_g", 3916 "vin0_data24",
3857 "vin0_data_r", 3917 "vin0_data20",
3858 "vin0_data_b", 3918 "vin0_data18",
3919 "vin0_data16",
3920 "vin0_data12",
3921 "vin0_data10",
3922 "vin0_data8",
3923 "vin0_data4",
3859 "vin0_sync", 3924 "vin0_sync",
3860 "vin0_field", 3925 "vin0_field",
3861 "vin0_clkenb", 3926 "vin0_clkenb",