Lines Matching +full:wakeup +full:- +full:config

1 // SPDX-License-Identifier: GPL-2.0-only
3 * linux/arch/arm/mach-pxa/mfp-pxa2xx.c
10 * wakeup detection are also supported by the same framework.
13 #include <linux/gpio-pxa.h>
20 #include <mach/pxa2xx-regs.h>
21 #include "mfp-pxa2xx.h"
30 #define BANK_OFF(n) (((n) < 3) ? (n) << 2 : 0x100 + (((n) - 3) << 2))
45 unsigned long config; member
62 return -EINVAL; in __mfp_config_gpio()
64 /* alternate function and direction at run-time */ in __mfp_config_gpio()
104 * configurations of those pins not able to wakeup in __mfp_config_gpio()
107 pr_warn("%s: GPIO%d unable to wakeup\n", __func__, gpio); in __mfp_config_gpio()
108 return -EINVAL; in __mfp_config_gpio()
112 pr_warn("%s: output GPIO%d unable to wakeup\n", __func__, gpio); in __mfp_config_gpio()
113 return -EINVAL; in __mfp_config_gpio()
125 return -1; in __mfp_validate()
145 gpio_desc[gpio].config = *c; in pxa2xx_mfp_config()
163 c = gpio_desc[gpio].config; in pxa2xx_mfp_set_lpm()
176 return -EINVAL; in gpio_set_wake()
179 c = d->config; in gpio_set_wake()
181 if (!d->valid) in gpio_set_wake()
182 return -EINVAL; in gpio_set_wake()
184 /* Allow keypad GPIOs to wakeup system when in gpio_set_wake()
187 if (d->keypad_gpio && (MFP_AF(d->config) == 0) && in gpio_set_wake()
188 (d->config & MFP_LPM_CAN_WAKEUP)) { in gpio_set_wake()
190 PKWR |= d->mask; in gpio_set_wake()
192 PKWR &= ~d->mask; in gpio_set_wake()
196 mux_taken = (PWER & d->mux_mask) & (~d->mask); in gpio_set_wake()
198 return -EBUSY; in gpio_set_wake()
200 if (d->can_wakeup && (c & MFP_LPM_CAN_WAKEUP)) { in gpio_set_wake()
202 PWER = (PWER & ~d->mux_mask) | d->mask; in gpio_set_wake()
205 PRER |= d->mask; in gpio_set_wake()
207 PRER &= ~d->mask; in gpio_set_wake()
210 PFER |= d->mask; in gpio_set_wake()
212 PFER &= ~d->mask; in gpio_set_wake()
214 PWER &= ~d->mask; in gpio_set_wake()
215 PRER &= ~d->mask; in gpio_set_wake()
216 PFER &= ~d->mask; in gpio_set_wake()
268 if (MFP_AF(d->config) == 0) in keypad_set_wake()
271 if (d->config & MFP_LPM_CAN_WAKEUP) in keypad_set_wake()
321 /* Overwrite GPIO13 as a PWER wakeup source */ in pxa27x_mfp_init()
357 if ((gpio_desc[i].config & MFP_LPM_KEEP_OUTPUT) && in pxa2xx_mfp_suspend()
380 ((gpio_desc[i].config & MFP_LPM_KEEP_OUTPUT) && in pxa2xx_mfp_suspend()