[rendering] Do not write duplicated hashes...
[wikipediardware.git] / kernel / input.c
blob160c4315fcfd59fad34e13e1be3b8c02bd684734
1 /*
2 * mahatma - a simple kernel framework
3 * Copyright (c) 2008, 2009 Daniel Mack <daniel@caiaq.de>
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 /* wikilib and guilib includes */
20 #include <guilib.h>
21 #include <wikilib.h>
22 #include <input.h>
23 #include <malloc.h>
25 /* local includes */
26 #include "types.h"
27 #include "regs.h"
28 #include "wikireader.h"
29 #include "misc.h"
30 #include "tff.h"
31 #include "serial.h"
32 #include "suspend.h"
33 #include "touchscreen.h"
34 #include "gpio.h"
35 #include "input.h"
37 int wl_input_wait(struct wl_input_event *ev, int sleep)
39 /* wl_input_wait() is called from the wikilib mainloop and we will
40 * get here regularily when the system has no other duty. Hence,
41 * the only thing we want to do here is go to sleep - the interrupt
42 * sources are set up and will bring us back to life at some point
45 while (1) {
46 if (serial_get_event(ev))
47 break;
49 if (touchscreen_get_event(ev))
50 break;
52 if (gpio_get_event(ev))
53 break;
55 /* no power saving return */
56 if (!sleep) {
57 ev->type = -1;
58 break;
61 /* we only go to a power saving halt mode if there is no
62 * messages pending */
63 if (!serial_output_pending()) {
64 system_suspend();
69 return 0;