diff options
| -rw-r--r-- | Documentation/devicetree/bindings/pinctrl/pinctrl-aspeed.txt | 4 | ||||
| -rw-r--r-- | drivers/pinctrl/aspeed/pinctrl-aspeed-g5.c | 100 | ||||
| -rw-r--r-- | drivers/pinctrl/aspeed/pinctrl-aspeed.c | 12 | ||||
| -rw-r--r-- | drivers/pinctrl/intel/pinctrl-baytrail.c | 3 | ||||
| -rw-r--r-- | drivers/pinctrl/intel/pinctrl-intel.c | 25 |
5 files changed, 120 insertions, 24 deletions
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-aspeed.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-aspeed.txt index 5e60ad18f147..2ad18c4ea55c 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-aspeed.txt +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-aspeed.txt | |||
| @@ -43,7 +43,9 @@ aspeed,ast2500-pinctrl, aspeed,g5-pinctrl: | |||
| 43 | 43 | ||
| 44 | GPID0 GPID2 GPIE0 I2C10 I2C11 I2C12 I2C13 I2C14 I2C3 I2C4 I2C5 I2C6 I2C7 I2C8 | 44 | GPID0 GPID2 GPIE0 I2C10 I2C11 I2C12 I2C13 I2C14 I2C3 I2C4 I2C5 I2C6 I2C7 I2C8 |
| 45 | I2C9 MAC1LINK MDIO1 MDIO2 OSCCLK PEWAKE PWM0 PWM1 PWM2 PWM3 PWM4 PWM5 PWM6 PWM7 | 45 | I2C9 MAC1LINK MDIO1 MDIO2 OSCCLK PEWAKE PWM0 PWM1 PWM2 PWM3 PWM4 PWM5 PWM6 PWM7 |
| 46 | RGMII1 RGMII2 RMII1 RMII2 SD1 SPI1 TIMER4 TIMER5 TIMER6 TIMER7 TIMER8 | 46 | RGMII1 RGMII2 RMII1 RMII2 SD1 SPI1 SPI1DEBUG SPI1PASSTHRU TIMER4 TIMER5 TIMER6 |
| 47 | TIMER7 TIMER8 VGABIOSROM | ||
| 48 | |||
| 47 | 49 | ||
| 48 | Examples: | 50 | Examples: |
| 49 | 51 | ||
diff --git a/drivers/pinctrl/aspeed/pinctrl-aspeed-g5.c b/drivers/pinctrl/aspeed/pinctrl-aspeed-g5.c index e1ab864e1a7f..c8c72e8259d3 100644 --- a/drivers/pinctrl/aspeed/pinctrl-aspeed-g5.c +++ b/drivers/pinctrl/aspeed/pinctrl-aspeed-g5.c | |||
| @@ -151,21 +151,21 @@ FUNC_GROUP_DECL(GPID0, F19, E21); | |||
| 151 | 151 | ||
| 152 | #define GPID2_DESC SIG_DESC_SET(SCU8C, 9) | 152 | #define GPID2_DESC SIG_DESC_SET(SCU8C, 9) |
| 153 | 153 | ||
| 154 | #define D20 26 | 154 | #define F20 26 |
| 155 | SIG_EXPR_LIST_DECL_SINGLE(SD2DAT0, SD2, SD2_DESC); | 155 | SIG_EXPR_LIST_DECL_SINGLE(SD2DAT0, SD2, SD2_DESC); |
| 156 | SIG_EXPR_DECL(GPID2IN, GPID2, GPID2_DESC); | 156 | SIG_EXPR_DECL(GPID2IN, GPID2, GPID2_DESC); |
| 157 | SIG_EXPR_DECL(GPID2IN, GPID, GPID_DESC); | 157 | SIG_EXPR_DECL(GPID2IN, GPID, GPID_DESC); |
| 158 | SIG_EXPR_LIST_DECL_DUAL(GPID2IN, GPID2, GPID); | 158 | SIG_EXPR_LIST_DECL_DUAL(GPID2IN, GPID2, GPID); |
| 159 | MS_PIN_DECL(D20, GPIOD2, SD2DAT0, GPID2IN); | 159 | MS_PIN_DECL(F20, GPIOD2, SD2DAT0, GPID2IN); |
| 160 | 160 | ||
| 161 | #define D21 27 | 161 | #define D20 27 |
| 162 | SIG_EXPR_LIST_DECL_SINGLE(SD2DAT1, SD2, SD2_DESC); | 162 | SIG_EXPR_LIST_DECL_SINGLE(SD2DAT1, SD2, SD2_DESC); |
| 163 | SIG_EXPR_DECL(GPID2OUT, GPID2, GPID2_DESC); | 163 | SIG_EXPR_DECL(GPID2OUT, GPID2, GPID2_DESC); |
| 164 | SIG_EXPR_DECL(GPID2OUT, GPID, GPID_DESC); | 164 | SIG_EXPR_DECL(GPID2OUT, GPID, GPID_DESC); |
| 165 | SIG_EXPR_LIST_DECL_DUAL(GPID2OUT, GPID2, GPID); | 165 | SIG_EXPR_LIST_DECL_DUAL(GPID2OUT, GPID2, GPID); |
| 166 | MS_PIN_DECL(D21, GPIOD3, SD2DAT1, GPID2OUT); | 166 | MS_PIN_DECL(D20, GPIOD3, SD2DAT1, GPID2OUT); |
| 167 | 167 | ||
| 168 | FUNC_GROUP_DECL(GPID2, D20, D21); | 168 | FUNC_GROUP_DECL(GPID2, F20, D20); |
| 169 | 169 | ||
| 170 | #define GPIE_DESC SIG_DESC_SET(HW_STRAP1, 21) | 170 | #define GPIE_DESC SIG_DESC_SET(HW_STRAP1, 21) |
| 171 | #define GPIE0_DESC SIG_DESC_SET(SCU8C, 12) | 171 | #define GPIE0_DESC SIG_DESC_SET(SCU8C, 12) |
| @@ -182,28 +182,88 @@ SIG_EXPR_LIST_DECL_SINGLE(NDCD3, NDCD3, SIG_DESC_SET(SCU80, 17)); | |||
| 182 | SIG_EXPR_DECL(GPIE0OUT, GPIE0, GPIE0_DESC); | 182 | SIG_EXPR_DECL(GPIE0OUT, GPIE0, GPIE0_DESC); |
| 183 | SIG_EXPR_DECL(GPIE0OUT, GPIE, GPIE_DESC); | 183 | SIG_EXPR_DECL(GPIE0OUT, GPIE, GPIE_DESC); |
| 184 | SIG_EXPR_LIST_DECL_DUAL(GPIE0OUT, GPIE0, GPIE); | 184 | SIG_EXPR_LIST_DECL_DUAL(GPIE0OUT, GPIE0, GPIE); |
| 185 | MS_PIN_DECL(C20, GPIE0, NDCD3, GPIE0OUT); | 185 | MS_PIN_DECL(C20, GPIOE1, NDCD3, GPIE0OUT); |
| 186 | 186 | ||
| 187 | FUNC_GROUP_DECL(GPIE0, B20, C20); | 187 | FUNC_GROUP_DECL(GPIE0, B20, C20); |
| 188 | 188 | ||
| 189 | #define SPI1_DESC SIG_DESC_SET(HW_STRAP1, 13) | 189 | #define SPI1_DESC { HW_STRAP1, GENMASK(13, 12), 1, 0 } |
| 190 | #define SPI1DEBUG_DESC { HW_STRAP1, GENMASK(13, 12), 2, 0 } | ||
| 191 | #define SPI1PASSTHRU_DESC { HW_STRAP1, GENMASK(13, 12), 3, 0 } | ||
| 192 | |||
| 190 | #define C18 64 | 193 | #define C18 64 |
| 191 | SIG_EXPR_LIST_DECL_SINGLE(SYSCS, SPI1, COND1, SPI1_DESC); | 194 | SIG_EXPR_DECL(SYSCS, SPI1DEBUG, COND1, SPI1DEBUG_DESC); |
| 195 | SIG_EXPR_DECL(SYSCS, SPI1PASSTHRU, COND1, SPI1PASSTHRU_DESC); | ||
| 196 | SIG_EXPR_LIST_DECL_DUAL(SYSCS, SPI1DEBUG, SPI1PASSTHRU); | ||
| 192 | SS_PIN_DECL(C18, GPIOI0, SYSCS); | 197 | SS_PIN_DECL(C18, GPIOI0, SYSCS); |
| 193 | 198 | ||
| 194 | #define E15 65 | 199 | #define E15 65 |
| 195 | SIG_EXPR_LIST_DECL_SINGLE(SYSCK, SPI1, COND1, SPI1_DESC); | 200 | SIG_EXPR_DECL(SYSCK, SPI1DEBUG, COND1, SPI1DEBUG_DESC); |
| 201 | SIG_EXPR_DECL(SYSCK, SPI1PASSTHRU, COND1, SPI1PASSTHRU_DESC); | ||
| 202 | SIG_EXPR_LIST_DECL_DUAL(SYSCK, SPI1DEBUG, SPI1PASSTHRU); | ||
| 196 | SS_PIN_DECL(E15, GPIOI1, SYSCK); | 203 | SS_PIN_DECL(E15, GPIOI1, SYSCK); |
| 197 | 204 | ||
| 198 | #define A14 66 | 205 | #define B16 66 |
| 199 | SIG_EXPR_LIST_DECL_SINGLE(SYSMOSI, SPI1, COND1, SPI1_DESC); | 206 | SIG_EXPR_DECL(SYSMOSI, SPI1DEBUG, COND1, SPI1DEBUG_DESC); |
| 200 | SS_PIN_DECL(A14, GPIOI2, SYSMOSI); | 207 | SIG_EXPR_DECL(SYSMOSI, SPI1PASSTHRU, COND1, SPI1PASSTHRU_DESC); |
| 208 | SIG_EXPR_LIST_DECL_DUAL(SYSMOSI, SPI1DEBUG, SPI1PASSTHRU); | ||
| 209 | SS_PIN_DECL(B16, GPIOI2, SYSMOSI); | ||
| 201 | 210 | ||
| 202 | #define C16 67 | 211 | #define C16 67 |
| 203 | SIG_EXPR_LIST_DECL_SINGLE(SYSMISO, SPI1, COND1, SPI1_DESC); | 212 | SIG_EXPR_DECL(SYSMISO, SPI1DEBUG, COND1, SPI1DEBUG_DESC); |
| 213 | SIG_EXPR_DECL(SYSMISO, SPI1PASSTHRU, COND1, SPI1PASSTHRU_DESC); | ||
| 214 | SIG_EXPR_LIST_DECL_DUAL(SYSMISO, SPI1DEBUG, SPI1PASSTHRU); | ||
| 204 | SS_PIN_DECL(C16, GPIOI3, SYSMISO); | 215 | SS_PIN_DECL(C16, GPIOI3, SYSMISO); |
| 205 | 216 | ||
| 206 | FUNC_GROUP_DECL(SPI1, C18, E15, A14, C16); | 217 | #define VB_DESC SIG_DESC_SET(HW_STRAP1, 5) |
| 218 | |||
| 219 | #define B15 68 | ||
| 220 | SIG_EXPR_DECL(SPI1CS0, SPI1, COND1, SPI1_DESC); | ||
| 221 | SIG_EXPR_DECL(SPI1CS0, SPI1DEBUG, COND1, SPI1DEBUG_DESC); | ||
| 222 | SIG_EXPR_DECL(SPI1CS0, SPI1PASSTHRU, COND1, SPI1PASSTHRU_DESC); | ||
| 223 | SIG_EXPR_LIST_DECL(SPI1CS0, SIG_EXPR_PTR(SPI1CS0, SPI1), | ||
| 224 | SIG_EXPR_PTR(SPI1CS0, SPI1DEBUG), | ||
| 225 | SIG_EXPR_PTR(SPI1CS0, SPI1PASSTHRU)); | ||
| 226 | SIG_EXPR_LIST_DECL_SINGLE(VBCS, VGABIOSROM, COND1, VB_DESC); | ||
| 227 | MS_PIN_DECL(B15, GPIOI4, SPI1CS0, VBCS); | ||
| 228 | |||
| 229 | #define C15 69 | ||
| 230 | SIG_EXPR_DECL(SPI1CK, SPI1, COND1, SPI1_DESC); | ||
| 231 | SIG_EXPR_DECL(SPI1CK, SPI1DEBUG, COND1, SPI1DEBUG_DESC); | ||
| 232 | SIG_EXPR_DECL(SPI1CK, SPI1PASSTHRU, COND1, SPI1PASSTHRU_DESC); | ||
| 233 | SIG_EXPR_LIST_DECL(SPI1CK, SIG_EXPR_PTR(SPI1CK, SPI1), | ||
| 234 | SIG_EXPR_PTR(SPI1CK, SPI1DEBUG), | ||
| 235 | SIG_EXPR_PTR(SPI1CK, SPI1PASSTHRU)); | ||
| 236 | SIG_EXPR_LIST_DECL_SINGLE(VBCK, VGABIOSROM, COND1, VB_DESC); | ||
| 237 | MS_PIN_DECL(C15, GPIOI5, SPI1CK, VBCK); | ||
| 238 | |||
| 239 | #define A14 70 | ||
| 240 | SIG_EXPR_DECL(SPI1MOSI, SPI1, COND1, SPI1_DESC); | ||
| 241 | SIG_EXPR_DECL(SPI1MOSI, SPI1DEBUG, COND1, SPI1DEBUG_DESC); | ||
| 242 | SIG_EXPR_DECL(SPI1MOSI, SPI1PASSTHRU, COND1, SPI1PASSTHRU_DESC); | ||
| 243 | SIG_EXPR_LIST_DECL(SPI1MOSI, SIG_EXPR_PTR(SPI1MOSI, SPI1), | ||
| 244 | SIG_EXPR_PTR(SPI1MOSI, SPI1DEBUG), | ||
| 245 | SIG_EXPR_PTR(SPI1MOSI, SPI1PASSTHRU)); | ||
| 246 | SIG_EXPR_LIST_DECL_SINGLE(VBMOSI, VGABIOSROM, COND1, VB_DESC); | ||
| 247 | MS_PIN_DECL(A14, GPIOI6, SPI1MOSI, VBMOSI); | ||
| 248 | |||
| 249 | #define A15 71 | ||
| 250 | SIG_EXPR_DECL(SPI1MISO, SPI1, COND1, SPI1_DESC); | ||
| 251 | SIG_EXPR_DECL(SPI1MISO, SPI1DEBUG, COND1, SPI1DEBUG_DESC); | ||
| 252 | SIG_EXPR_DECL(SPI1MISO, SPI1PASSTHRU, COND1, SPI1PASSTHRU_DESC); | ||
| 253 | SIG_EXPR_LIST_DECL(SPI1MISO, SIG_EXPR_PTR(SPI1MISO, SPI1), | ||
| 254 | SIG_EXPR_PTR(SPI1MISO, SPI1DEBUG), | ||
| 255 | SIG_EXPR_PTR(SPI1MISO, SPI1PASSTHRU)); | ||
| 256 | SIG_EXPR_LIST_DECL_SINGLE(VBMISO, VGABIOSROM, COND1, VB_DESC); | ||
| 257 | MS_PIN_DECL(A15, GPIOI7, SPI1MISO, VBMISO); | ||
| 258 | |||
| 259 | FUNC_GROUP_DECL(SPI1, B15, C15, A14, A15); | ||
| 260 | FUNC_GROUP_DECL(SPI1DEBUG, C18, E15, B16, C16, B15, C15, A14, A15); | ||
| 261 | FUNC_GROUP_DECL(SPI1PASSTHRU, C18, E15, B16, C16, B15, C15, A14, A15); | ||
| 262 | FUNC_GROUP_DECL(VGABIOSROM, B15, C15, A14, A15); | ||
| 263 | |||
| 264 | #define R2 72 | ||
| 265 | SIG_EXPR_LIST_DECL_SINGLE(SGPMCK, SGPM, SIG_DESC_SET(SCU84, 8)); | ||
| 266 | SS_PIN_DECL(R2, GPIOJ0, SGPMCK); | ||
| 207 | 267 | ||
| 208 | #define L2 73 | 268 | #define L2 73 |
| 209 | SIG_EXPR_LIST_DECL_SINGLE(SGPMLD, SGPM, SIG_DESC_SET(SCU84, 9)); | 269 | SIG_EXPR_LIST_DECL_SINGLE(SGPMLD, SGPM, SIG_DESC_SET(SCU84, 9)); |
| @@ -580,6 +640,7 @@ static struct pinctrl_pin_desc aspeed_g5_pins[ASPEED_G5_NR_PINS] = { | |||
| 580 | ASPEED_PINCTRL_PIN(A12), | 640 | ASPEED_PINCTRL_PIN(A12), |
| 581 | ASPEED_PINCTRL_PIN(A13), | 641 | ASPEED_PINCTRL_PIN(A13), |
| 582 | ASPEED_PINCTRL_PIN(A14), | 642 | ASPEED_PINCTRL_PIN(A14), |
| 643 | ASPEED_PINCTRL_PIN(A15), | ||
| 583 | ASPEED_PINCTRL_PIN(A2), | 644 | ASPEED_PINCTRL_PIN(A2), |
| 584 | ASPEED_PINCTRL_PIN(A3), | 645 | ASPEED_PINCTRL_PIN(A3), |
| 585 | ASPEED_PINCTRL_PIN(A4), | 646 | ASPEED_PINCTRL_PIN(A4), |
| @@ -592,6 +653,8 @@ static struct pinctrl_pin_desc aspeed_g5_pins[ASPEED_G5_NR_PINS] = { | |||
| 592 | ASPEED_PINCTRL_PIN(B12), | 653 | ASPEED_PINCTRL_PIN(B12), |
| 593 | ASPEED_PINCTRL_PIN(B13), | 654 | ASPEED_PINCTRL_PIN(B13), |
| 594 | ASPEED_PINCTRL_PIN(B14), | 655 | ASPEED_PINCTRL_PIN(B14), |
| 656 | ASPEED_PINCTRL_PIN(B15), | ||
| 657 | ASPEED_PINCTRL_PIN(B16), | ||
| 595 | ASPEED_PINCTRL_PIN(B2), | 658 | ASPEED_PINCTRL_PIN(B2), |
| 596 | ASPEED_PINCTRL_PIN(B20), | 659 | ASPEED_PINCTRL_PIN(B20), |
| 597 | ASPEED_PINCTRL_PIN(B3), | 660 | ASPEED_PINCTRL_PIN(B3), |
| @@ -603,6 +666,7 @@ static struct pinctrl_pin_desc aspeed_g5_pins[ASPEED_G5_NR_PINS] = { | |||
| 603 | ASPEED_PINCTRL_PIN(C12), | 666 | ASPEED_PINCTRL_PIN(C12), |
| 604 | ASPEED_PINCTRL_PIN(C13), | 667 | ASPEED_PINCTRL_PIN(C13), |
| 605 | ASPEED_PINCTRL_PIN(C14), | 668 | ASPEED_PINCTRL_PIN(C14), |
| 669 | ASPEED_PINCTRL_PIN(C15), | ||
| 606 | ASPEED_PINCTRL_PIN(C16), | 670 | ASPEED_PINCTRL_PIN(C16), |
| 607 | ASPEED_PINCTRL_PIN(C18), | 671 | ASPEED_PINCTRL_PIN(C18), |
| 608 | ASPEED_PINCTRL_PIN(C2), | 672 | ASPEED_PINCTRL_PIN(C2), |
| @@ -614,7 +678,6 @@ static struct pinctrl_pin_desc aspeed_g5_pins[ASPEED_G5_NR_PINS] = { | |||
| 614 | ASPEED_PINCTRL_PIN(D10), | 678 | ASPEED_PINCTRL_PIN(D10), |
| 615 | ASPEED_PINCTRL_PIN(D2), | 679 | ASPEED_PINCTRL_PIN(D2), |
| 616 | ASPEED_PINCTRL_PIN(D20), | 680 | ASPEED_PINCTRL_PIN(D20), |
| 617 | ASPEED_PINCTRL_PIN(D21), | ||
| 618 | ASPEED_PINCTRL_PIN(D4), | 681 | ASPEED_PINCTRL_PIN(D4), |
| 619 | ASPEED_PINCTRL_PIN(D5), | 682 | ASPEED_PINCTRL_PIN(D5), |
| 620 | ASPEED_PINCTRL_PIN(D6), | 683 | ASPEED_PINCTRL_PIN(D6), |
| @@ -630,6 +693,7 @@ static struct pinctrl_pin_desc aspeed_g5_pins[ASPEED_G5_NR_PINS] = { | |||
| 630 | ASPEED_PINCTRL_PIN(E7), | 693 | ASPEED_PINCTRL_PIN(E7), |
| 631 | ASPEED_PINCTRL_PIN(E9), | 694 | ASPEED_PINCTRL_PIN(E9), |
| 632 | ASPEED_PINCTRL_PIN(F19), | 695 | ASPEED_PINCTRL_PIN(F19), |
| 696 | ASPEED_PINCTRL_PIN(F20), | ||
| 633 | ASPEED_PINCTRL_PIN(F9), | 697 | ASPEED_PINCTRL_PIN(F9), |
| 634 | ASPEED_PINCTRL_PIN(H20), | 698 | ASPEED_PINCTRL_PIN(H20), |
| 635 | ASPEED_PINCTRL_PIN(L1), | 699 | ASPEED_PINCTRL_PIN(L1), |
| @@ -691,11 +755,14 @@ static const struct aspeed_pin_group aspeed_g5_groups[] = { | |||
| 691 | ASPEED_PINCTRL_GROUP(RMII2), | 755 | ASPEED_PINCTRL_GROUP(RMII2), |
| 692 | ASPEED_PINCTRL_GROUP(SD1), | 756 | ASPEED_PINCTRL_GROUP(SD1), |
| 693 | ASPEED_PINCTRL_GROUP(SPI1), | 757 | ASPEED_PINCTRL_GROUP(SPI1), |
| 758 | ASPEED_PINCTRL_GROUP(SPI1DEBUG), | ||
| 759 | ASPEED_PINCTRL_GROUP(SPI1PASSTHRU), | ||
| 694 | ASPEED_PINCTRL_GROUP(TIMER4), | 760 | ASPEED_PINCTRL_GROUP(TIMER4), |
| 695 | ASPEED_PINCTRL_GROUP(TIMER5), | 761 | ASPEED_PINCTRL_GROUP(TIMER5), |
| 696 | ASPEED_PINCTRL_GROUP(TIMER6), | 762 | ASPEED_PINCTRL_GROUP(TIMER6), |
| 697 | ASPEED_PINCTRL_GROUP(TIMER7), | 763 | ASPEED_PINCTRL_GROUP(TIMER7), |
| 698 | ASPEED_PINCTRL_GROUP(TIMER8), | 764 | ASPEED_PINCTRL_GROUP(TIMER8), |
| 765 | ASPEED_PINCTRL_GROUP(VGABIOSROM), | ||
| 699 | }; | 766 | }; |
| 700 | 767 | ||
| 701 | static const struct aspeed_pin_function aspeed_g5_functions[] = { | 768 | static const struct aspeed_pin_function aspeed_g5_functions[] = { |
| @@ -733,11 +800,14 @@ static const struct aspeed_pin_function aspeed_g5_functions[] = { | |||
| 733 | ASPEED_PINCTRL_FUNC(RMII2), | 800 | ASPEED_PINCTRL_FUNC(RMII2), |
| 734 | ASPEED_PINCTRL_FUNC(SD1), | 801 | ASPEED_PINCTRL_FUNC(SD1), |
| 735 | ASPEED_PINCTRL_FUNC(SPI1), | 802 | ASPEED_PINCTRL_FUNC(SPI1), |
| 803 | ASPEED_PINCTRL_FUNC(SPI1DEBUG), | ||
| 804 | ASPEED_PINCTRL_FUNC(SPI1PASSTHRU), | ||
| 736 | ASPEED_PINCTRL_FUNC(TIMER4), | 805 | ASPEED_PINCTRL_FUNC(TIMER4), |
| 737 | ASPEED_PINCTRL_FUNC(TIMER5), | 806 | ASPEED_PINCTRL_FUNC(TIMER5), |
| 738 | ASPEED_PINCTRL_FUNC(TIMER6), | 807 | ASPEED_PINCTRL_FUNC(TIMER6), |
| 739 | ASPEED_PINCTRL_FUNC(TIMER7), | 808 | ASPEED_PINCTRL_FUNC(TIMER7), |
| 740 | ASPEED_PINCTRL_FUNC(TIMER8), | 809 | ASPEED_PINCTRL_FUNC(TIMER8), |
| 810 | ASPEED_PINCTRL_FUNC(VGABIOSROM), | ||
| 741 | }; | 811 | }; |
| 742 | 812 | ||
| 743 | static struct aspeed_pinctrl_data aspeed_g5_pinctrl_data = { | 813 | static struct aspeed_pinctrl_data aspeed_g5_pinctrl_data = { |
diff --git a/drivers/pinctrl/aspeed/pinctrl-aspeed.c b/drivers/pinctrl/aspeed/pinctrl-aspeed.c index 0391f9f13f3e..49aeba912531 100644 --- a/drivers/pinctrl/aspeed/pinctrl-aspeed.c +++ b/drivers/pinctrl/aspeed/pinctrl-aspeed.c | |||
| @@ -166,13 +166,9 @@ static bool aspeed_sig_expr_set(const struct aspeed_sig_expr *expr, | |||
| 166 | bool enable, struct regmap *map) | 166 | bool enable, struct regmap *map) |
| 167 | { | 167 | { |
| 168 | int i; | 168 | int i; |
| 169 | bool ret; | ||
| 170 | |||
| 171 | ret = aspeed_sig_expr_eval(expr, enable, map); | ||
| 172 | if (ret) | ||
| 173 | return ret; | ||
| 174 | 169 | ||
| 175 | for (i = 0; i < expr->ndescs; i++) { | 170 | for (i = 0; i < expr->ndescs; i++) { |
| 171 | bool ret; | ||
| 176 | const struct aspeed_sig_desc *desc = &expr->descs[i]; | 172 | const struct aspeed_sig_desc *desc = &expr->descs[i]; |
| 177 | u32 pattern = enable ? desc->enable : desc->disable; | 173 | u32 pattern = enable ? desc->enable : desc->disable; |
| 178 | 174 | ||
| @@ -199,12 +195,18 @@ static bool aspeed_sig_expr_set(const struct aspeed_sig_expr *expr, | |||
| 199 | static bool aspeed_sig_expr_enable(const struct aspeed_sig_expr *expr, | 195 | static bool aspeed_sig_expr_enable(const struct aspeed_sig_expr *expr, |
| 200 | struct regmap *map) | 196 | struct regmap *map) |
| 201 | { | 197 | { |
| 198 | if (aspeed_sig_expr_eval(expr, true, map)) | ||
| 199 | return true; | ||
| 200 | |||
| 202 | return aspeed_sig_expr_set(expr, true, map); | 201 | return aspeed_sig_expr_set(expr, true, map); |
| 203 | } | 202 | } |
| 204 | 203 | ||
| 205 | static bool aspeed_sig_expr_disable(const struct aspeed_sig_expr *expr, | 204 | static bool aspeed_sig_expr_disable(const struct aspeed_sig_expr *expr, |
| 206 | struct regmap *map) | 205 | struct regmap *map) |
| 207 | { | 206 | { |
| 207 | if (!aspeed_sig_expr_eval(expr, true, map)) | ||
| 208 | return true; | ||
| 209 | |||
| 208 | return aspeed_sig_expr_set(expr, false, map); | 210 | return aspeed_sig_expr_set(expr, false, map); |
| 209 | } | 211 | } |
| 210 | 212 | ||
diff --git a/drivers/pinctrl/intel/pinctrl-baytrail.c b/drivers/pinctrl/intel/pinctrl-baytrail.c index d22a9fe2e6df..71bbeb9321ba 100644 --- a/drivers/pinctrl/intel/pinctrl-baytrail.c +++ b/drivers/pinctrl/intel/pinctrl-baytrail.c | |||
| @@ -1808,6 +1808,8 @@ static int byt_pinctrl_probe(struct platform_device *pdev) | |||
| 1808 | return PTR_ERR(vg->pctl_dev); | 1808 | return PTR_ERR(vg->pctl_dev); |
| 1809 | } | 1809 | } |
| 1810 | 1810 | ||
| 1811 | raw_spin_lock_init(&vg->lock); | ||
| 1812 | |||
| 1811 | ret = byt_gpio_probe(vg); | 1813 | ret = byt_gpio_probe(vg); |
| 1812 | if (ret) { | 1814 | if (ret) { |
| 1813 | pinctrl_unregister(vg->pctl_dev); | 1815 | pinctrl_unregister(vg->pctl_dev); |
| @@ -1815,7 +1817,6 @@ static int byt_pinctrl_probe(struct platform_device *pdev) | |||
| 1815 | } | 1817 | } |
| 1816 | 1818 | ||
| 1817 | platform_set_drvdata(pdev, vg); | 1819 | platform_set_drvdata(pdev, vg); |
| 1818 | raw_spin_lock_init(&vg->lock); | ||
| 1819 | pm_runtime_enable(&pdev->dev); | 1820 | pm_runtime_enable(&pdev->dev); |
| 1820 | 1821 | ||
| 1821 | return 0; | 1822 | return 0; |
diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c index 63387a40b973..01443762e570 100644 --- a/drivers/pinctrl/intel/pinctrl-intel.c +++ b/drivers/pinctrl/intel/pinctrl-intel.c | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | #include <linux/pinctrl/pinconf.h> | 19 | #include <linux/pinctrl/pinconf.h> |
| 20 | #include <linux/pinctrl/pinconf-generic.h> | 20 | #include <linux/pinctrl/pinconf-generic.h> |
| 21 | 21 | ||
| 22 | #include "../core.h" | ||
| 22 | #include "pinctrl-intel.h" | 23 | #include "pinctrl-intel.h" |
| 23 | 24 | ||
| 24 | /* Offset from regs */ | 25 | /* Offset from regs */ |
| @@ -1056,6 +1057,26 @@ int intel_pinctrl_remove(struct platform_device *pdev) | |||
| 1056 | EXPORT_SYMBOL_GPL(intel_pinctrl_remove); | 1057 | EXPORT_SYMBOL_GPL(intel_pinctrl_remove); |
| 1057 | 1058 | ||
| 1058 | #ifdef CONFIG_PM_SLEEP | 1059 | #ifdef CONFIG_PM_SLEEP |
| 1060 | static bool intel_pinctrl_should_save(struct intel_pinctrl *pctrl, unsigned pin) | ||
| 1061 | { | ||
| 1062 | const struct pin_desc *pd = pin_desc_get(pctrl->pctldev, pin); | ||
| 1063 | |||
| 1064 | if (!pd || !intel_pad_usable(pctrl, pin)) | ||
| 1065 | return false; | ||
| 1066 | |||
| 1067 | /* | ||
| 1068 | * Only restore the pin if it is actually in use by the kernel (or | ||
| 1069 | * by userspace). It is possible that some pins are used by the | ||
| 1070 | * BIOS during resume and those are not always locked down so leave | ||
| 1071 | * them alone. | ||
| 1072 | */ | ||
| 1073 | if (pd->mux_owner || pd->gpio_owner || | ||
| 1074 | gpiochip_line_is_irq(&pctrl->chip, pin)) | ||
| 1075 | return true; | ||
| 1076 | |||
| 1077 | return false; | ||
| 1078 | } | ||
| 1079 | |||
| 1059 | int intel_pinctrl_suspend(struct device *dev) | 1080 | int intel_pinctrl_suspend(struct device *dev) |
| 1060 | { | 1081 | { |
| 1061 | struct platform_device *pdev = to_platform_device(dev); | 1082 | struct platform_device *pdev = to_platform_device(dev); |
| @@ -1069,7 +1090,7 @@ int intel_pinctrl_suspend(struct device *dev) | |||
| 1069 | const struct pinctrl_pin_desc *desc = &pctrl->soc->pins[i]; | 1090 | const struct pinctrl_pin_desc *desc = &pctrl->soc->pins[i]; |
| 1070 | u32 val; | 1091 | u32 val; |
| 1071 | 1092 | ||
| 1072 | if (!intel_pad_usable(pctrl, desc->number)) | 1093 | if (!intel_pinctrl_should_save(pctrl, desc->number)) |
| 1073 | continue; | 1094 | continue; |
| 1074 | 1095 | ||
| 1075 | val = readl(intel_get_padcfg(pctrl, desc->number, PADCFG0)); | 1096 | val = readl(intel_get_padcfg(pctrl, desc->number, PADCFG0)); |
| @@ -1130,7 +1151,7 @@ int intel_pinctrl_resume(struct device *dev) | |||
| 1130 | void __iomem *padcfg; | 1151 | void __iomem *padcfg; |
| 1131 | u32 val; | 1152 | u32 val; |
| 1132 | 1153 | ||
| 1133 | if (!intel_pad_usable(pctrl, desc->number)) | 1154 | if (!intel_pinctrl_should_save(pctrl, desc->number)) |
| 1134 | continue; | 1155 | continue; |
| 1135 | 1156 | ||
| 1136 | padcfg = intel_get_padcfg(pctrl, desc->number, PADCFG0); | 1157 | padcfg = intel_get_padcfg(pctrl, desc->number, PADCFG0); |
