28
28
#define SCU438 0x438 /* Multi-function Pin Control #10 */
29
29
#define SCU440 0x440 /* USB Multi-function Pin Control #12 */
30
30
#define SCU450 0x450 /* Multi-function Pin Control #14 */
31
+ #define SCU454 0x454 /* Multi-function Pin Control #15 */
32
+ #define SCU458 0x458 /* Multi-function Pin Control #16 */
31
33
#define SCU4B0 0x4B0 /* Multi-function Pin Control #17 */
32
34
#define SCU4B4 0x4B4 /* Multi-function Pin Control #18 */
33
35
#define SCU4B8 0x4B8 /* Multi-function Pin Control #19 */
36
38
#define SCU4D8 0x4D8 /* Multi-function Pin Control #23 */
37
39
#define SCU500 0x500 /* Hardware Strap 1 */
38
40
#define SCU510 0x510 /* Hardware Strap 2 */
41
+ #define SCU610 0x610 /* Disable GPIO Internal Pull-Down #0 */
42
+ #define SCU614 0x614 /* Disable GPIO Internal Pull-Down #1 */
43
+ #define SCU618 0x618 /* Disable GPIO Internal Pull-Down #2 */
44
+ #define SCU61C 0x61c /* Disable GPIO Internal Pull-Down #3 */
45
+ #define SCU620 0x620 /* Disable GPIO Internal Pull-Down #4 */
46
+ #define SCU634 0x634 /* Disable GPIO Internal Pull-Down #5 */
47
+ #define SCU638 0x638 /* Disable GPIO Internal Pull-Down #6 */
39
48
#define SCU694 0x694 /* Multi-function Pin Control #25 */
40
49
#define SCUC20 0xC20 /* PCIE configuration Setting Control */
41
50
@@ -2333,6 +2342,260 @@ static const struct aspeed_pin_function aspeed_g6_functions[] = {
2333
2342
ASPEED_PINCTRL_FUNC (WDTRST4 ),
2334
2343
};
2335
2344
2345
+ static struct aspeed_pin_config aspeed_g6_configs [] = {
2346
+ /* GPIOB7 */
2347
+ ASPEED_PULL_DOWN_PINCONF (J24 , SCU610 , 15 ),
2348
+ /* GPIOB6 */
2349
+ ASPEED_PULL_DOWN_PINCONF (H25 , SCU610 , 14 ),
2350
+ /* GPIOB5 */
2351
+ ASPEED_PULL_DOWN_PINCONF (G26 , SCU610 , 13 ),
2352
+ /* GPIOB4 */
2353
+ ASPEED_PULL_DOWN_PINCONF (J23 , SCU610 , 12 ),
2354
+ /* GPIOB3 */
2355
+ ASPEED_PULL_DOWN_PINCONF (J25 , SCU610 , 11 ),
2356
+ /* GPIOB2 */
2357
+ ASPEED_PULL_DOWN_PINCONF (H26 , SCU610 , 10 ),
2358
+ /* GPIOB1 */
2359
+ ASPEED_PULL_DOWN_PINCONF (K23 , SCU610 , 9 ),
2360
+ /* GPIOB0 */
2361
+ ASPEED_PULL_DOWN_PINCONF (J26 , SCU610 , 8 ),
2362
+
2363
+ /* GPIOH3 */
2364
+ ASPEED_PULL_DOWN_PINCONF (A17 , SCU614 , 27 ),
2365
+ /* GPIOH2 */
2366
+ ASPEED_PULL_DOWN_PINCONF (C18 , SCU614 , 26 ),
2367
+ /* GPIOH1 */
2368
+ ASPEED_PULL_DOWN_PINCONF (B18 , SCU614 , 25 ),
2369
+ /* GPIOH0 */
2370
+ ASPEED_PULL_DOWN_PINCONF (A18 , SCU614 , 24 ),
2371
+
2372
+ /* GPIOL7 */
2373
+ ASPEED_PULL_DOWN_PINCONF (C14 , SCU618 , 31 ),
2374
+ /* GPIOL6 */
2375
+ ASPEED_PULL_DOWN_PINCONF (B14 , SCU618 , 30 ),
2376
+ /* GPIOL5 */
2377
+ ASPEED_PULL_DOWN_PINCONF (F15 , SCU618 , 29 ),
2378
+ /* GPIOL4 */
2379
+ ASPEED_PULL_DOWN_PINCONF (C15 , SCU618 , 28 ),
2380
+
2381
+ /* GPIOJ7 */
2382
+ ASPEED_PULL_UP_PINCONF (D19 , SCU618 , 15 ),
2383
+ /* GPIOJ6 */
2384
+ ASPEED_PULL_UP_PINCONF (C20 , SCU618 , 14 ),
2385
+ /* GPIOJ5 */
2386
+ ASPEED_PULL_UP_PINCONF (A19 , SCU618 , 13 ),
2387
+ /* GPIOJ4 */
2388
+ ASPEED_PULL_UP_PINCONF (C19 , SCU618 , 12 ),
2389
+ /* GPIOJ3 */
2390
+ ASPEED_PULL_UP_PINCONF (D20 , SCU618 , 11 ),
2391
+ /* GPIOJ2 */
2392
+ ASPEED_PULL_UP_PINCONF (E19 , SCU618 , 10 ),
2393
+ /* GPIOJ1 */
2394
+ ASPEED_PULL_UP_PINCONF (A20 , SCU618 , 9 ),
2395
+ /* GPIOJ0 */
2396
+ ASPEED_PULL_UP_PINCONF (B20 , SCU618 , 8 ),
2397
+
2398
+ /* GPIOI7 */
2399
+ ASPEED_PULL_DOWN_PINCONF (A15 , SCU618 , 7 ),
2400
+ /* GPIOI6 */
2401
+ ASPEED_PULL_DOWN_PINCONF (B16 , SCU618 , 6 ),
2402
+ /* GPIOI5 */
2403
+ ASPEED_PULL_DOWN_PINCONF (E16 , SCU618 , 5 ),
2404
+ /* GPIOI4 */
2405
+ ASPEED_PULL_DOWN_PINCONF (C16 , SCU618 , 4 ),
2406
+ /* GPIOI3 */
2407
+ ASPEED_PULL_DOWN_PINCONF (D16 , SCU618 , 3 ),
2408
+ /* GPIOI2 */
2409
+ ASPEED_PULL_DOWN_PINCONF (E17 , SCU618 , 2 ),
2410
+ /* GPIOI1 */
2411
+ ASPEED_PULL_DOWN_PINCONF (A16 , SCU618 , 1 ),
2412
+ /* GPIOI0 */
2413
+ ASPEED_PULL_DOWN_PINCONF (D17 , SCU618 , 0 ),
2414
+
2415
+ /* GPIOP7 */
2416
+ ASPEED_PULL_DOWN_PINCONF (Y23 , SCU61C , 31 ),
2417
+ /* GPIOP6 */
2418
+ ASPEED_PULL_DOWN_PINCONF (AB24 , SCU61C , 30 ),
2419
+ /* GPIOP5 */
2420
+ ASPEED_PULL_DOWN_PINCONF (AB23 , SCU61C , 29 ),
2421
+ /* GPIOP4 */
2422
+ ASPEED_PULL_DOWN_PINCONF (W23 , SCU61C , 28 ),
2423
+ /* GPIOP3 */
2424
+ ASPEED_PULL_DOWN_PINCONF (AA24 , SCU61C , 27 ),
2425
+ /* GPIOP2 */
2426
+ ASPEED_PULL_DOWN_PINCONF (AA23 , SCU61C , 26 ),
2427
+ /* GPIOP1 */
2428
+ ASPEED_PULL_DOWN_PINCONF (W24 , SCU61C , 25 ),
2429
+ /* GPIOP0 */
2430
+ ASPEED_PULL_DOWN_PINCONF (AB22 , SCU61C , 24 ),
2431
+
2432
+ /* GPIOO7 */
2433
+ ASPEED_PULL_DOWN_PINCONF (AC23 , SCU61C , 23 ),
2434
+ /* GPIOO6 */
2435
+ ASPEED_PULL_DOWN_PINCONF (AC24 , SCU61C , 22 ),
2436
+ /* GPIOO5 */
2437
+ ASPEED_PULL_DOWN_PINCONF (AC22 , SCU61C , 21 ),
2438
+ /* GPIOO4 */
2439
+ ASPEED_PULL_DOWN_PINCONF (AD25 , SCU61C , 20 ),
2440
+ /* GPIOO3 */
2441
+ ASPEED_PULL_DOWN_PINCONF (AD24 , SCU61C , 19 ),
2442
+ /* GPIOO2 */
2443
+ ASPEED_PULL_DOWN_PINCONF (AD23 , SCU61C , 18 ),
2444
+ /* GPIOO1 */
2445
+ ASPEED_PULL_DOWN_PINCONF (AD22 , SCU61C , 17 ),
2446
+ /* GPIOO0 */
2447
+ ASPEED_PULL_DOWN_PINCONF (AD26 , SCU61C , 16 ),
2448
+
2449
+ /* GPION7 */
2450
+ ASPEED_PULL_DOWN_PINCONF (M26 , SCU61C , 15 ),
2451
+ /* GPION6 */
2452
+ ASPEED_PULL_DOWN_PINCONF (N26 , SCU61C , 14 ),
2453
+ /* GPION5 */
2454
+ ASPEED_PULL_DOWN_PINCONF (M23 , SCU61C , 13 ),
2455
+ /* GPION4 */
2456
+ ASPEED_PULL_DOWN_PINCONF (P26 , SCU61C , 12 ),
2457
+ /* GPION3 */
2458
+ ASPEED_PULL_DOWN_PINCONF (N24 , SCU61C , 11 ),
2459
+ /* GPION2 */
2460
+ ASPEED_PULL_DOWN_PINCONF (N25 , SCU61C , 10 ),
2461
+ /* GPION1 */
2462
+ ASPEED_PULL_DOWN_PINCONF (N23 , SCU61C , 9 ),
2463
+ /* GPION0 */
2464
+ ASPEED_PULL_DOWN_PINCONF (P25 , SCU61C , 8 ),
2465
+
2466
+ /* GPIOM7 */
2467
+ ASPEED_PULL_DOWN_PINCONF (D13 , SCU61C , 7 ),
2468
+ /* GPIOM6 */
2469
+ ASPEED_PULL_DOWN_PINCONF (C13 , SCU61C , 6 ),
2470
+ /* GPIOM5 */
2471
+ ASPEED_PULL_DOWN_PINCONF (C12 , SCU61C , 5 ),
2472
+ /* GPIOM4 */
2473
+ ASPEED_PULL_DOWN_PINCONF (B12 , SCU61C , 4 ),
2474
+ /* GPIOM3 */
2475
+ ASPEED_PULL_DOWN_PINCONF (E14 , SCU61C , 3 ),
2476
+ /* GPIOM2 */
2477
+ ASPEED_PULL_DOWN_PINCONF (A12 , SCU61C , 2 ),
2478
+ /* GPIOM1 */
2479
+ ASPEED_PULL_DOWN_PINCONF (B13 , SCU61C , 1 ),
2480
+ /* GPIOM0 */
2481
+ ASPEED_PULL_DOWN_PINCONF (D14 , SCU61C , 0 ),
2482
+
2483
+ /* GPIOS7 */
2484
+ ASPEED_PULL_DOWN_PINCONF (T24 , SCU620 , 23 ),
2485
+ /* GPIOS6 */
2486
+ ASPEED_PULL_DOWN_PINCONF (P23 , SCU620 , 22 ),
2487
+ /* GPIOS5 */
2488
+ ASPEED_PULL_DOWN_PINCONF (P24 , SCU620 , 21 ),
2489
+ /* GPIOS4 */
2490
+ ASPEED_PULL_DOWN_PINCONF (R26 , SCU620 , 20 ),
2491
+ /* GPIOS3*/
2492
+ ASPEED_PULL_DOWN_PINCONF (R24 , SCU620 , 19 ),
2493
+ /* GPIOS2 */
2494
+ ASPEED_PULL_DOWN_PINCONF (T26 , SCU620 , 18 ),
2495
+ /* GPIOS1 */
2496
+ ASPEED_PULL_DOWN_PINCONF (T25 , SCU620 , 17 ),
2497
+ /* GPIOS0 */
2498
+ ASPEED_PULL_DOWN_PINCONF (R23 , SCU620 , 16 ),
2499
+
2500
+ /* GPIOR7 */
2501
+ ASPEED_PULL_DOWN_PINCONF (U26 , SCU620 , 15 ),
2502
+ /* GPIOR6 */
2503
+ ASPEED_PULL_DOWN_PINCONF (W26 , SCU620 , 14 ),
2504
+ /* GPIOR5 */
2505
+ ASPEED_PULL_DOWN_PINCONF (T23 , SCU620 , 13 ),
2506
+ /* GPIOR4 */
2507
+ ASPEED_PULL_DOWN_PINCONF (U25 , SCU620 , 12 ),
2508
+ /* GPIOR3*/
2509
+ ASPEED_PULL_DOWN_PINCONF (V26 , SCU620 , 11 ),
2510
+ /* GPIOR2 */
2511
+ ASPEED_PULL_DOWN_PINCONF (V24 , SCU620 , 10 ),
2512
+ /* GPIOR1 */
2513
+ ASPEED_PULL_DOWN_PINCONF (U24 , SCU620 , 9 ),
2514
+ /* GPIOR0 */
2515
+ ASPEED_PULL_DOWN_PINCONF (V25 , SCU620 , 8 ),
2516
+
2517
+ /* GPIOX7 */
2518
+ ASPEED_PULL_DOWN_PINCONF (AB10 , SCU634 , 31 ),
2519
+ /* GPIOX6 */
2520
+ ASPEED_PULL_DOWN_PINCONF (AF9 , SCU634 , 30 ),
2521
+ /* GPIOX5 */
2522
+ ASPEED_PULL_DOWN_PINCONF (AD9 , SCU634 , 29 ),
2523
+ /* GPIOX4 */
2524
+ ASPEED_PULL_DOWN_PINCONF (AB9 , SCU634 , 28 ),
2525
+ /* GPIOX3*/
2526
+ ASPEED_PULL_DOWN_PINCONF (AF8 , SCU634 , 27 ),
2527
+ /* GPIOX2 */
2528
+ ASPEED_PULL_DOWN_PINCONF (AC9 , SCU634 , 26 ),
2529
+ /* GPIOX1 */
2530
+ ASPEED_PULL_DOWN_PINCONF (AA9 , SCU634 , 25 ),
2531
+ /* GPIOX0 */
2532
+ ASPEED_PULL_DOWN_PINCONF (AE8 , SCU634 , 24 ),
2533
+
2534
+ /* GPIOV7 */
2535
+ ASPEED_PULL_DOWN_PINCONF (AF15 , SCU634 , 15 ),
2536
+ /* GPIOV6 */
2537
+ ASPEED_PULL_DOWN_PINCONF (AD15 , SCU634 , 14 ),
2538
+ /* GPIOV5 */
2539
+ ASPEED_PULL_DOWN_PINCONF (AE14 , SCU634 , 13 ),
2540
+ /* GPIOV4 */
2541
+ ASPEED_PULL_DOWN_PINCONF (AE15 , SCU634 , 12 ),
2542
+ /* GPIOV3*/
2543
+ ASPEED_PULL_DOWN_PINCONF (AC15 , SCU634 , 11 ),
2544
+ /* GPIOV2 */
2545
+ ASPEED_PULL_DOWN_PINCONF (AD14 , SCU634 , 10 ),
2546
+ /* GPIOV1 */
2547
+ ASPEED_PULL_DOWN_PINCONF (AF14 , SCU634 , 9 ),
2548
+ /* GPIOV0 */
2549
+ ASPEED_PULL_DOWN_PINCONF (AB15 , SCU634 , 8 ),
2550
+
2551
+ /* GPIOZ7 */
2552
+ ASPEED_PULL_DOWN_PINCONF (AF10 , SCU638 , 15 ),
2553
+ /* GPIOZ6 */
2554
+ ASPEED_PULL_DOWN_PINCONF (AD11 , SCU638 , 14 ),
2555
+ /* GPIOZ5 */
2556
+ ASPEED_PULL_DOWN_PINCONF (AA11 , SCU638 , 13 ),
2557
+ /* GPIOZ4 */
2558
+ ASPEED_PULL_DOWN_PINCONF (AC11 , SCU638 , 12 ),
2559
+ /* GPIOZ3*/
2560
+ ASPEED_PULL_DOWN_PINCONF (AB11 , SCU638 , 11 ),
2561
+
2562
+ /* GPIOZ1 */
2563
+ ASPEED_PULL_DOWN_PINCONF (AD10 , SCU638 , 9 ),
2564
+ /* GPIOZ0 */
2565
+ ASPEED_PULL_DOWN_PINCONF (AC10 , SCU638 , 8 ),
2566
+
2567
+ /* GPIOY6 */
2568
+ ASPEED_PULL_DOWN_PINCONF (AC12 , SCU638 , 6 ),
2569
+ /* GPIOY5 */
2570
+ ASPEED_PULL_DOWN_PINCONF (AF12 , SCU638 , 5 ),
2571
+ /* GPIOY4 */
2572
+ ASPEED_PULL_DOWN_PINCONF (AE12 , SCU638 , 4 ),
2573
+ /* GPIOY3 */
2574
+ ASPEED_PULL_DOWN_PINCONF (AA12 , SCU638 , 3 ),
2575
+ /* GPIOY2 */
2576
+ ASPEED_PULL_DOWN_PINCONF (AE11 , SCU638 , 2 ),
2577
+ /* GPIOY1 */
2578
+ ASPEED_PULL_DOWN_PINCONF (AD12 , SCU638 , 1 ),
2579
+ /* GPIOY0 */
2580
+ ASPEED_PULL_DOWN_PINCONF (AF11 , SCU638 , 0 ),
2581
+
2582
+ /* LAD3 */
2583
+ { PIN_CONFIG_DRIVE_STRENGTH , { AC7 , AC7 }, SCU454 , GENMASK (31 , 30 )},
2584
+ /* LAD2 */
2585
+ { PIN_CONFIG_DRIVE_STRENGTH , { AC8 , AC8 }, SCU454 , GENMASK (29 , 28 )},
2586
+ /* LAD1 */
2587
+ { PIN_CONFIG_DRIVE_STRENGTH , { AB8 , AB8 }, SCU454 , GENMASK (27 , 26 )},
2588
+ /* LAD0 */
2589
+ { PIN_CONFIG_DRIVE_STRENGTH , { AB7 , AB7 }, SCU454 , GENMASK (25 , 24 )},
2590
+
2591
+ /* MAC3 */
2592
+ { PIN_CONFIG_POWER_SOURCE , { H24 , E26 }, SCU458 , BIT_MASK (4 )},
2593
+ { PIN_CONFIG_DRIVE_STRENGTH , { H24 , E26 }, SCU458 , GENMASK (1 , 0 )},
2594
+ /* MAC4 */
2595
+ { PIN_CONFIG_POWER_SOURCE , { F24 , B24 }, SCU458 , BIT_MASK (5 )},
2596
+ { PIN_CONFIG_DRIVE_STRENGTH , { F24 , B24 }, SCU458 , GENMASK (3 , 2 )},
2597
+ };
2598
+
2336
2599
/**
2337
2600
* Configure a pin's signal by applying an expression's descriptor state for
2338
2601
* all descriptors in the expression.
@@ -2400,6 +2663,20 @@ static int aspeed_g6_sig_expr_set(struct aspeed_pinmux_data *ctx,
2400
2663
return 0 ;
2401
2664
}
2402
2665
2666
+ static const struct aspeed_pin_config_map aspeed_g6_pin_config_map [] = {
2667
+ { PIN_CONFIG_BIAS_PULL_DOWN , 0 , 1 , BIT_MASK (0 )},
2668
+ { PIN_CONFIG_BIAS_PULL_DOWN , -1 , 0 , BIT_MASK (0 )},
2669
+ { PIN_CONFIG_BIAS_PULL_UP , 0 , 1 , BIT_MASK (0 )},
2670
+ { PIN_CONFIG_BIAS_PULL_UP , -1 , 0 , BIT_MASK (0 )},
2671
+ { PIN_CONFIG_BIAS_DISABLE , -1 , 1 , BIT_MASK (0 )},
2672
+ { PIN_CONFIG_DRIVE_STRENGTH , 4 , 0 , GENMASK (1 , 0 )},
2673
+ { PIN_CONFIG_DRIVE_STRENGTH , 8 , 1 , GENMASK (1 , 0 )},
2674
+ { PIN_CONFIG_DRIVE_STRENGTH , 12 , 2 , GENMASK (1 , 0 )},
2675
+ { PIN_CONFIG_DRIVE_STRENGTH , 16 , 3 , GENMASK (1 , 0 )},
2676
+ { PIN_CONFIG_POWER_SOURCE , 3300 , 0 , BIT_MASK (0 )},
2677
+ { PIN_CONFIG_POWER_SOURCE , 1800 , 1 , BIT_MASK (0 )},
2678
+ };
2679
+
2403
2680
static const struct aspeed_pinmux_ops aspeed_g5_ops = {
2404
2681
.set = aspeed_g6_sig_expr_set ,
2405
2682
};
@@ -2414,6 +2691,10 @@ static struct aspeed_pinctrl_data aspeed_g6_pinctrl_data = {
2414
2691
.functions = aspeed_g6_functions ,
2415
2692
.nfunctions = ARRAY_SIZE (aspeed_g6_functions ),
2416
2693
},
2694
+ .configs = aspeed_g6_configs ,
2695
+ .nconfigs = ARRAY_SIZE (aspeed_g6_configs ),
2696
+ .confmaps = aspeed_g6_pin_config_map ,
2697
+ .nconfmaps = ARRAY_SIZE (aspeed_g6_pin_config_map ),
2417
2698
};
2418
2699
2419
2700
static const struct pinmux_ops aspeed_g6_pinmux_ops = {
@@ -2434,12 +2715,21 @@ static const struct pinctrl_ops aspeed_g6_pinctrl_ops = {
2434
2715
.dt_free_map = pinctrl_utils_free_map ,
2435
2716
};
2436
2717
2718
+ static const struct pinconf_ops aspeed_g6_conf_ops = {
2719
+ .is_generic = true,
2720
+ .pin_config_get = aspeed_pin_config_get ,
2721
+ .pin_config_set = aspeed_pin_config_set ,
2722
+ .pin_config_group_get = aspeed_pin_config_group_get ,
2723
+ .pin_config_group_set = aspeed_pin_config_group_set ,
2724
+ };
2725
+
2437
2726
static struct pinctrl_desc aspeed_g6_pinctrl_desc = {
2438
2727
.name = "aspeed-g6-pinctrl" ,
2439
2728
.pins = aspeed_g6_pins ,
2440
2729
.npins = ARRAY_SIZE (aspeed_g6_pins ),
2441
2730
.pctlops = & aspeed_g6_pinctrl_ops ,
2442
2731
.pmxops = & aspeed_g6_pinmux_ops ,
2732
+ .confops = & aspeed_g6_conf_ops ,
2443
2733
};
2444
2734
2445
2735
static int aspeed_g6_pinctrl_probe (struct platform_device * pdev )
0 commit comments