|
32 | 32 | #define OMAP4_GPIO_DEBOUNCINGTIME_MASK 0xFF
|
33 | 33 |
|
34 | 34 | #define OMAP_GPIO_QUIRK_IDLE_REMOVE_TRIGGER BIT(2)
|
35 |
| -#define OMAP_GPIO_QUIRK_DEFERRED_WKUP_EN BIT(1) |
36 | 35 |
|
37 | 36 | struct gpio_regs {
|
38 | 37 | u32 irqenable1;
|
@@ -379,18 +378,9 @@ static inline void omap_set_gpio_trigger(struct gpio_bank *bank, int gpio,
|
379 | 378 | readl_relaxed(bank->base + bank->regs->fallingdetect);
|
380 | 379 |
|
381 | 380 | if (likely(!(bank->non_wakeup_gpios & gpio_bit))) {
|
382 |
| - /* Defer wkup_en register update until we idle? */ |
383 |
| - if (bank->quirks & OMAP_GPIO_QUIRK_DEFERRED_WKUP_EN) { |
384 |
| - if (trigger) |
385 |
| - bank->context.wake_en |= gpio_bit; |
386 |
| - else |
387 |
| - bank->context.wake_en &= ~gpio_bit; |
388 |
| - } else { |
389 |
| - omap_gpio_rmw(base, bank->regs->wkup_en, gpio_bit, |
390 |
| - trigger != 0); |
391 |
| - bank->context.wake_en = |
392 |
| - readl_relaxed(bank->base + bank->regs->wkup_en); |
393 |
| - } |
| 381 | + omap_gpio_rmw(base, bank->regs->wkup_en, gpio_bit, trigger != 0); |
| 382 | + bank->context.wake_en = |
| 383 | + readl_relaxed(bank->base + bank->regs->wkup_en); |
394 | 384 | }
|
395 | 385 |
|
396 | 386 | /* This part needs to be executed always for OMAP{34xx, 44xx} */
|
@@ -942,44 +932,6 @@ omap2_gpio_disable_level_quirk(struct gpio_bank *bank)
|
942 | 932 | bank->base + bank->regs->risingdetect);
|
943 | 933 | }
|
944 | 934 |
|
945 |
| -/* |
946 |
| - * On omap4 and later SoC variants a level interrupt with wkup_en |
947 |
| - * enabled blocks the GPIO functional clock from idling until the GPIO |
948 |
| - * instance has been reset. To avoid that, we must set wkup_en only for |
949 |
| - * idle for level interrupts, and clear level registers for the duration |
950 |
| - * of idle. The level interrupts will be still there on wakeup by their |
951 |
| - * nature. |
952 |
| - */ |
953 |
| -static void __maybe_unused |
954 |
| -omap4_gpio_enable_level_quirk(struct gpio_bank *bank) |
955 |
| -{ |
956 |
| - /* Update wake register for idle, edge bits might be already set */ |
957 |
| - writel_relaxed(bank->context.wake_en, |
958 |
| - bank->base + bank->regs->wkup_en); |
959 |
| - |
960 |
| - /* Clear level registers for idle */ |
961 |
| - writel_relaxed(0, bank->base + bank->regs->leveldetect0); |
962 |
| - writel_relaxed(0, bank->base + bank->regs->leveldetect1); |
963 |
| -} |
964 |
| - |
965 |
| -static void __maybe_unused |
966 |
| -omap4_gpio_disable_level_quirk(struct gpio_bank *bank) |
967 |
| -{ |
968 |
| - /* Restore level registers after idle */ |
969 |
| - writel_relaxed(bank->context.leveldetect0, |
970 |
| - bank->base + bank->regs->leveldetect0); |
971 |
| - writel_relaxed(bank->context.leveldetect1, |
972 |
| - bank->base + bank->regs->leveldetect1); |
973 |
| - |
974 |
| - /* Clear saved wkup_en for level, it will be set for next idle again */ |
975 |
| - bank->context.wake_en &= ~(bank->context.leveldetect0 | |
976 |
| - bank->context.leveldetect1); |
977 |
| - |
978 |
| - /* Update wake with only edge configuration */ |
979 |
| - writel_relaxed(bank->context.wake_en, |
980 |
| - bank->base + bank->regs->wkup_en); |
981 |
| -} |
982 |
| - |
983 | 935 | /*---------------------------------------------------------------------*/
|
984 | 936 |
|
985 | 937 | static int omap_mpuio_suspend_noirq(struct device *dev)
|
@@ -1412,12 +1364,7 @@ static int omap_gpio_probe(struct platform_device *pdev)
|
1412 | 1364 | omap_set_gpio_dataout_mask_multiple;
|
1413 | 1365 | }
|
1414 | 1366 |
|
1415 |
| - if (bank->quirks & OMAP_GPIO_QUIRK_DEFERRED_WKUP_EN) { |
1416 |
| - bank->funcs.idle_enable_level_quirk = |
1417 |
| - omap4_gpio_enable_level_quirk; |
1418 |
| - bank->funcs.idle_disable_level_quirk = |
1419 |
| - omap4_gpio_disable_level_quirk; |
1420 |
| - } else if (bank->quirks & OMAP_GPIO_QUIRK_IDLE_REMOVE_TRIGGER) { |
| 1367 | + if (bank->quirks & OMAP_GPIO_QUIRK_IDLE_REMOVE_TRIGGER) { |
1421 | 1368 | bank->funcs.idle_enable_level_quirk =
|
1422 | 1369 | omap2_gpio_enable_level_quirk;
|
1423 | 1370 | bank->funcs.idle_disable_level_quirk =
|
@@ -1806,8 +1753,7 @@ static const struct omap_gpio_platform_data omap4_pdata = {
|
1806 | 1753 | .regs = &omap4_gpio_regs,
|
1807 | 1754 | .bank_width = 32,
|
1808 | 1755 | .dbck_flag = true,
|
1809 |
| - .quirks = OMAP_GPIO_QUIRK_IDLE_REMOVE_TRIGGER | |
1810 |
| - OMAP_GPIO_QUIRK_DEFERRED_WKUP_EN, |
| 1756 | + .quirks = OMAP_GPIO_QUIRK_IDLE_REMOVE_TRIGGER, |
1811 | 1757 | };
|
1812 | 1758 |
|
1813 | 1759 | static const struct of_device_id omap_gpio_match[] = {
|
|
0 commit comments