summaryrefslogtreecommitdiffstats
path: root/firmware/target/arm/tatung/tpj1022/button-tpj1022.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/tatung/tpj1022/button-tpj1022.c')
-rw-r--r--firmware/target/arm/tatung/tpj1022/button-tpj1022.c83
1 files changed, 83 insertions, 0 deletions
diff --git a/firmware/target/arm/tatung/tpj1022/button-tpj1022.c b/firmware/target/arm/tatung/tpj1022/button-tpj1022.c
new file mode 100644
index 0000000000..f0b338c1c1
--- /dev/null
+++ b/firmware/target/arm/tatung/tpj1022/button-tpj1022.c
@@ -0,0 +1,83 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2006 by Barry Wardell
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+/* Custom written for the TPJ-1022 based on analysis of the GPIO data */
+
+#include <stdlib.h>
+#include "config.h"
+#include "cpu.h"
+#include "system.h"
+#include "button.h"
+#include "kernel.h"
+#include "backlight.h"
+#include "adc.h"
+#include "system.h"
+
+void button_init_device(void)
+{
+ /* No hardware initialisation required as it is done by the bootloader */
+}
+
+bool button_hold(void)
+{
+ return false;
+}
+
+/*
+ * Get button pressed from hardware
+ */
+int button_read_device(void)
+{
+ int btn = BUTTON_NONE;
+ unsigned char state;
+ static bool hold_button = false;
+
+#if 0
+ /* light handling */
+ if (hold_button && !button_hold())
+ {
+ backlight_on();
+ }
+#endif
+
+ hold_button = button_hold();
+ if (!hold_button)
+ {
+ /* Read normal buttons */
+ state = GPIOA_INPUT_VAL;
+ if ((state & 0x2) == 0) btn |= BUTTON_REW;
+ if ((state & 0x4) == 0) btn |= BUTTON_FF;
+ if ((state & 0x80) == 0) btn |= BUTTON_RIGHT;
+
+ /* Buttons left to figure out:
+ button_hold()
+ BUTTON_POWER
+ BUTTON_LEFT
+ BUTTON_UP
+ BUTTON_DOWN
+ BUTTON_MENU
+ BUTTON_REC
+ BUTTON_AB
+ BUTTON_PLUS
+ BUTTON_MINUS
+ */
+ }
+
+ return btn;
+}