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

Commit c03c2a87 authored by Michael Hennerich's avatar Michael Hennerich Committed by Mike Frysinger
Browse files

Blackfin: fix bugs in GPIO resume code



Change the bfin_gpio_pm_hibernate_restore() function to:
1) AND restored DATA with DIR (not OR) to get correct final state
2) Restore DATA before setting DIR to avoid glitches

Signed-off-by: default avatarMichael Hennerich <michael.hennerich@analog.com>
Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
parent 4c94c3e0
Loading
Loading
Loading
Loading
+2 −4
Original line number Original line Diff line number Diff line
@@ -686,14 +686,12 @@ void bfin_gpio_pm_hibernate_restore(void)
		*port_fer[bank] = gpio_bank_saved[bank].fer;
		*port_fer[bank] = gpio_bank_saved[bank].fer;
#endif
#endif
		gpio_array[bank]->inen  = gpio_bank_saved[bank].inen;
		gpio_array[bank]->inen  = gpio_bank_saved[bank].inen;
		gpio_array[bank]->data_set = gpio_bank_saved[bank].data
						& gpio_bank_saved[bank].dir;
		gpio_array[bank]->dir   = gpio_bank_saved[bank].dir;
		gpio_array[bank]->dir   = gpio_bank_saved[bank].dir;
		gpio_array[bank]->polar = gpio_bank_saved[bank].polar;
		gpio_array[bank]->polar = gpio_bank_saved[bank].polar;
		gpio_array[bank]->edge  = gpio_bank_saved[bank].edge;
		gpio_array[bank]->edge  = gpio_bank_saved[bank].edge;
		gpio_array[bank]->both  = gpio_bank_saved[bank].both;
		gpio_array[bank]->both  = gpio_bank_saved[bank].both;

		gpio_array[bank]->data_set = gpio_bank_saved[bank].data
						| gpio_bank_saved[bank].dir;

		gpio_array[bank]->maska = gpio_bank_saved[bank].maska;
		gpio_array[bank]->maska = gpio_bank_saved[bank].maska;
	}
	}
	AWA_DUMMY_READ(maska);
	AWA_DUMMY_READ(maska);