Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 581d62ab authored by Michael Hennerich's avatar Michael Hennerich Committed by Bryan Wu
Browse files

Blackfin arch: fix bug can not wakeup from sleep via push buttons

parent 5e10b4a6
Loading
Loading
Loading
Loading
+10 −2
Original line number Original line Diff line number Diff line
@@ -494,19 +494,24 @@ u32 gpio_pm_setup(void)
			gpio_bank_saved[bank].dir   = gpio_bankb[bank]->dir;
			gpio_bank_saved[bank].dir   = gpio_bankb[bank]->dir;
			gpio_bank_saved[bank].edge  = gpio_bankb[bank]->edge;
			gpio_bank_saved[bank].edge  = gpio_bankb[bank]->edge;
			gpio_bank_saved[bank].both  = gpio_bankb[bank]->both;
			gpio_bank_saved[bank].both  = gpio_bankb[bank]->both;
			gpio_bank_saved[bank].reserved = reserved_map[bank];


			gpio = i;
			gpio = i;


			while (mask) {
			while (mask) {
				if (mask & 1) {
				if (mask & 1) {
					bfin_gpio_wakeup_type(gpio, wakeup_flags_map[gpio]);
					reserved_map[gpio_bank(gpio)] |=
							gpio_bit(gpio);
					bfin_gpio_wakeup_type(gpio,
						wakeup_flags_map[gpio]);
					set_gpio_data(gpio, 0); /*Clear*/
					set_gpio_data(gpio, 0); /*Clear*/
				}
				}
				gpio++;
				gpio++;
				mask >>= 1;
				mask >>= 1;
			}
			}


			sic_iwr |= 1 << (sic_iwr_irqs[bank] - (IRQ_CORETMR + 1));
			sic_iwr |= 1 <<
				(sic_iwr_irqs[bank] - (IRQ_CORETMR + 1));
			gpio_bankb[bank]->maskb_set = wakeup_map[gpio_bank(i)];
			gpio_bankb[bank]->maskb_set = wakeup_map[gpio_bank(i)];
		}
		}
	}
	}
@@ -535,6 +540,9 @@ void gpio_pm_restore(void)
			gpio_bankb[bank]->polar = gpio_bank_saved[bank].polar;
			gpio_bankb[bank]->polar = gpio_bank_saved[bank].polar;
			gpio_bankb[bank]->edge  = gpio_bank_saved[bank].edge;
			gpio_bankb[bank]->edge  = gpio_bank_saved[bank].edge;
			gpio_bankb[bank]->both  = gpio_bank_saved[bank].both;
			gpio_bankb[bank]->both  = gpio_bank_saved[bank].both;

			reserved_map[bank] = gpio_bank_saved[bank].reserved;

		}
		}


		gpio_bankb[bank]->maskb = gpio_bank_saved[bank].maskb;
		gpio_bankb[bank]->maskb = gpio_bank_saved[bank].maskb;
+1 −0
Original line number Original line Diff line number Diff line
@@ -332,6 +332,7 @@ struct gpio_port_s {
	unsigned short inen;
	unsigned short inen;


	unsigned short fer;
	unsigned short fer;
	unsigned short reserved;
};
};
#endif /*CONFIG_PM*/
#endif /*CONFIG_PM*/