Lines Matching +full:ast2600 +full:- +full:gpio
1 // SPDX-License-Identifier: GPL-2.0-or-later
17 #include "../pinctrl-utils.h"
18 #include "pinctrl-aspeed.h"
21 #define SCU400 0x400 /* Multi-function Pin Control #1 */
22 #define SCU404 0x404 /* Multi-function Pin Control #2 */
23 #define SCU40C 0x40C /* Multi-function Pin Control #3 */
24 #define SCU410 0x410 /* Multi-function Pin Control #4 */
25 #define SCU414 0x414 /* Multi-function Pin Control #5 */
26 #define SCU418 0x418 /* Multi-function Pin Control #6 */
27 #define SCU41C 0x41C /* Multi-function Pin Control #7 */
28 #define SCU430 0x430 /* Multi-function Pin Control #8 */
29 #define SCU434 0x434 /* Multi-function Pin Control #9 */
30 #define SCU438 0x438 /* Multi-function Pin Control #10 */
31 #define SCU440 0x440 /* USB Multi-function Pin Control #12 */
32 #define SCU450 0x450 /* Multi-function Pin Control #14 */
33 #define SCU454 0x454 /* Multi-function Pin Control #15 */
34 #define SCU458 0x458 /* Multi-function Pin Control #16 */
35 #define SCU4B0 0x4B0 /* Multi-function Pin Control #17 */
36 #define SCU4B4 0x4B4 /* Multi-function Pin Control #18 */
37 #define SCU4B8 0x4B8 /* Multi-function Pin Control #19 */
38 #define SCU4BC 0x4BC /* Multi-function Pin Control #20 */
39 #define SCU4D4 0x4D4 /* Multi-function Pin Control #22 */
40 #define SCU4D8 0x4D8 /* Multi-function Pin Control #23 */
43 #define SCU610 0x610 /* Disable GPIO Internal Pull-Down #0 */
44 #define SCU614 0x614 /* Disable GPIO Internal Pull-Down #1 */
45 #define SCU618 0x618 /* Disable GPIO Internal Pull-Down #2 */
46 #define SCU61C 0x61c /* Disable GPIO Internal Pull-Down #3 */
47 #define SCU630 0x630 /* Disable GPIO Internal Pull-Down #4 */
48 #define SCU634 0x634 /* Disable GPIO Internal Pull-Down #5 */
49 #define SCU638 0x638 /* Disable GPIO Internal Pull-Down #6 */
50 #define SCU690 0x690 /* Multi-function Pin Control #24 */
51 #define SCU694 0x694 /* Multi-function Pin Control #25 */
52 #define SCU69C 0x69C /* Multi-function Pin Control #27 */
53 #define SCU6D0 0x6D0 /* Multi-function Pin Control #29 */
2650 * aspeed_g6_sig_expr_set() - Configure a pin's signal by applying an
2669 for (i = 0; i < expr->ndescs; i++) { in aspeed_g6_sig_expr_set()
2670 const struct aspeed_sig_desc *desc = &expr->descs[i]; in aspeed_g6_sig_expr_set()
2671 u32 pattern = enable ? desc->enable : desc->disable; in aspeed_g6_sig_expr_set()
2672 u32 val = (pattern << __ffs(desc->mask)); in aspeed_g6_sig_expr_set()
2675 if (!ctx->maps[desc->ip]) in aspeed_g6_sig_expr_set()
2676 return -ENODEV; in aspeed_g6_sig_expr_set()
2678 WARN_ON(desc->ip != ASPEED_IP_SCU); in aspeed_g6_sig_expr_set()
2679 is_strap = desc->reg == SCU500 || desc->reg == SCU510; in aspeed_g6_sig_expr_set()
2683 * The AST2600 has write protection mask registers for in aspeed_g6_sig_expr_set()
2688 * The strapping registers implement write-1-clear in aspeed_g6_sig_expr_set()
2692 u32 clear = ~val & desc->mask; in aspeed_g6_sig_expr_set()
2693 u32 w1c = desc->reg + 4; in aspeed_g6_sig_expr_set()
2696 ret = regmap_update_bits(ctx->maps[desc->ip], in aspeed_g6_sig_expr_set()
2697 w1c, desc->mask, in aspeed_g6_sig_expr_set()
2701 ret = regmap_update_bits(ctx->maps[desc->ip], desc->reg, in aspeed_g6_sig_expr_set()
2702 desc->mask, val); in aspeed_g6_sig_expr_set()
2712 return -EPERM; in aspeed_g6_sig_expr_set()
2718 { PIN_CONFIG_BIAS_PULL_DOWN, -1, 0, BIT_MASK(0)},
2720 { PIN_CONFIG_BIAS_PULL_UP, -1, 0, BIT_MASK(0)},
2721 { PIN_CONFIG_BIAS_DISABLE, -1, 1, BIT_MASK(0)},
2777 .name = "aspeed-g6-pinctrl",
2797 { .compatible = "aspeed,ast2600-pinctrl", },
2804 .name = "aspeed-g6-pinctrl",