[dev][gpio_keypad] make the init function wait for one full scan
diff --git a/dev/keys/gpio_keypad.c b/dev/keys/gpio_keypad.c
index b867769..5d15076 100644
--- a/dev/keys/gpio_keypad.c
+++ b/dev/keys/gpio_keypad.c
@@ -36,11 +36,13 @@
 #include <dev/keys.h>
 #include <dev/gpio.h>
 #include <dev/gpio_keypad.h>
+#include <kernel/event.h>
 #include <kernel/timer.h>
 
 struct gpio_kp {
 	struct gpio_keypad_info *keypad_info;
 	struct timer timer;
+	event_t full_scan;
 	int current_output;
 	unsigned int some_keys_pressed:2;
 	unsigned long keys_pressed[0];
@@ -113,6 +115,7 @@
 	}
 
 	if (/*!kp->use_irq*/ 1 || kp->some_keys_pressed) {
+		event_signal(&kp->full_scan, false);
 		timer_set_oneshot(timer, kpinfo->poll_time,
 				  gpio_keypad_timer_func, NULL);
 		goto done;
@@ -166,6 +169,10 @@
 
 	keypad->current_output = kpinfo->noutputs;
 
+	event_init(&keypad->full_scan, false, EVENT_FLAG_AUTOUNSIGNAL);
 	timer_initialize(&keypad->timer);
 	timer_set_oneshot(&keypad->timer, 0, gpio_keypad_timer_func, NULL);
+
+	/* wait for the keypad to complete one full scan */
+	event_wait(&keypad->full_scan);
 }