aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ginput/toggle/Pal
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ginput/toggle/Pal')
-rw-r--r--drivers/ginput/toggle/Pal/ginput_lld.mk5
-rw-r--r--drivers/ginput/toggle/Pal/ginput_lld_toggle.c62
-rw-r--r--drivers/ginput/toggle/Pal/ginput_lld_toggle_board_example.h65
-rw-r--r--drivers/ginput/toggle/Pal/ginput_lld_toggle_board_olimexsam7ex256.h60
-rw-r--r--drivers/ginput/toggle/Pal/ginput_lld_toggle_config.h44
-rw-r--r--drivers/ginput/toggle/Pal/readme.txt13
6 files changed, 249 insertions, 0 deletions
diff --git a/drivers/ginput/toggle/Pal/ginput_lld.mk b/drivers/ginput/toggle/Pal/ginput_lld.mk
new file mode 100644
index 00000000..d398da9d
--- /dev/null
+++ b/drivers/ginput/toggle/Pal/ginput_lld.mk
@@ -0,0 +1,5 @@
+# List the required driver.
+GFXSRC += $(GFXLIB)/drivers/ginput/toggle/Pal/ginput_lld_toggle.c
+
+# Required include directories
+GFXINC += $(GFXLIB)/drivers/ginput/toggle/Pal
diff --git a/drivers/ginput/toggle/Pal/ginput_lld_toggle.c b/drivers/ginput/toggle/Pal/ginput_lld_toggle.c
new file mode 100644
index 00000000..98c2f61b
--- /dev/null
+++ b/drivers/ginput/toggle/Pal/ginput_lld_toggle.c
@@ -0,0 +1,62 @@
+/*
+ ChibiOS/RT - Copyright (C) 2012
+ Joel Bodenmann aka Tectu <joel@unormal.org>
+
+ This file is part of ChibiOS/GFX.
+
+ ChibiOS/GFX is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/GFX is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @file drivers/ginput/togglePal/ginput_lld_toggle.c
+ * @brief GINPUT Toggle low level driver source for the ChibiOS PAL hardware.
+ *
+ * @addtogroup GINPUT_TOGGLE
+ * @{
+ */
+
+#include "ch.h"
+#include "hal.h"
+
+#if (GFX_USE_GINPUT && GINPUT_NEED_TOGGLE) /*|| defined(__DOXYGEN__)*/
+
+// Declare the static members in the following include file
+#define GINPUT_TOGGLE_DECLARE_CONFIG
+
+#include "lld/ginput/toggle.h"
+
+/**
+ * @brief Initialise the port.
+ *
+ * @param[in] ptc A pointer to one of the entries in GInputToggleConfigTable
+ *
+ * @notapi
+ */
+void ginput_lld_toggle_init(const GToggleConfig *ptc) {
+ palSetGroupMode(((IOBus *)ptc->id)->portid, ptc->mask, 0, ptc->mode);
+}
+
+/**
+ * @brief Get the bits from the port.
+ *
+ * @param[in] ptc A pointer to one of the entries in GInputToggleConfigTable
+ *
+ * @notapi
+ */
+unsigned ginput_lld_toggle_getbits(const GToggleConfig *ptc) {
+ return palReadBus((IOBus *)ptc->id);
+}
+
+#endif /* GFX_USE_GINPUT && GINPUT_NEED_TOGGLE */
+/** @} */
diff --git a/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_example.h b/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_example.h
new file mode 100644
index 00000000..e8262b9a
--- /dev/null
+++ b/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_example.h
@@ -0,0 +1,65 @@
+/*
+ ChibiOS/RT - Copyright (C) 2012
+ Joel Bodenmann aka Tectu <joel@unormal.org>
+
+ This file is part of ChibiOS/GFX.
+
+ ChibiOS/GFX is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/GFX is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @file drivers/ginput/togglePal/ginput_lld_toggle_board_example.h
+ * @brief GINPUT Toggle low level driver source for the ChibiOS PAL hardware on the example board.
+ *
+ * @addtogroup GINPUT_TOGGLE
+ * @{
+ */
+
+#ifndef _GDISP_LLD_TOGGLE_BOARD_H
+#define _GDISP_LLD_TOGGLE_BOARD_H
+
+#ifndef _GINPUT_LLD_TOGGLE_CONFIG_H
+ // Visible in ginput.h
+
+ #define GINPUT_TOGGLE_SW1 0 // Switch 1
+ #define GINPUT_TOGGLE_SW2 1 // Switch 2
+ #define GINPUT_TOGGLE_UP 2 // Joystick Up
+ #define GINPUT_TOGGLE_DOWN 3 // Joystick Down
+ #define GINPUT_TOGGLE_LEFT 4 // Joystick Left
+ #define GINPUT_TOGGLE_RIGHT 5 // Joystick Right
+ #define GINPUT_TOGGLE_CENTER 6 // Joystick Center
+
+#elif !defined(GINPUT_TOGGLE_DECLARE_CONFIG)
+ // Visible in ginput_lld.h
+
+ #define GINPUT_TOGGLE_NUM_PORTS 7 // The total number of toggle inputs
+
+#else
+ // Visible in ginput_lld_toggle.c
+
+ GToggleConfig GInputToggleConfigTable[] = {
+ {AT91C_BASE_PIOB, // Switch 1 and Switch 2
+ PIOB_SW1_MASK|PIOB_SW2_MASK,
+ PIOB_SW1_MASK|PIOB_SW2_MASK,
+ PAL_MODE_INPUT},
+ {AT91C_BASE_PIOA, // B1..4 Joystick
+ PIOA_B1_MASK|PIOA_B2_MASK|PIOA_B3_MASK|PIOA_B4_MASK|PIOA_B5_MASK,
+ PIOA_B1_MASK|PIOA_B2_MASK|PIOA_B3_MASK|PIOA_B4_MASK|PIOA_B5_MASK,
+ PAL_MODE_INPUT},
+ };
+
+#endif
+
+#endif /* _GDISP_LLD_TOGGLE_BOARD_H */
+/** @} */
diff --git a/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_olimexsam7ex256.h b/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_olimexsam7ex256.h
new file mode 100644
index 00000000..3858ad0c
--- /dev/null
+++ b/drivers/ginput/toggle/Pal/ginput_lld_toggle_board_olimexsam7ex256.h
@@ -0,0 +1,60 @@
+/*
+ ChibiOS/RT - Copyright (C) 2012
+ Joel Bodenmann aka Tectu <joel@unormal.org>
+
+ This file is part of ChibiOS/GFX.
+
+ ChibiOS/GFX is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/GFX is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @file drivers/ginput/togglePal/ginput_lld_toggle_board_olimexsam7ex256.h
+ * @brief GINPUT Toggle low level driver source for the ChibiOS PAL hardware on the Olimex SAM7EX256 board.
+ *
+ * @addtogroup GINPUT_TOGGLE
+ * @{
+ */
+
+#ifndef _GDISP_LLD_TOGGLE_BOARD_H
+#define _GDISP_LLD_TOGGLE_BOARD_H
+
+#define GINPUT_TOGGLE_NUM_PORTS 7 // The total number of toggle inputs
+#define GINPUT_TOGGLE_CONFIG_ENTRIES 2 // The total number of GToggleConfig entries
+
+#define GINPUT_TOGGLE_SW1 0 // Switch 1
+#define GINPUT_TOGGLE_SW2 1 // Switch 2
+#define GINPUT_TOGGLE_UP 2 // Joystick Up
+#define GINPUT_TOGGLE_DOWN 3 // Joystick Down
+#define GINPUT_TOGGLE_LEFT 4 // Joystick Left
+#define GINPUT_TOGGLE_RIGHT 5 // Joystick Right
+#define GINPUT_TOGGLE_CENTER 6 // Joystick Center
+
+#ifdef GINPUT_TOGGLE_DECLARE_CONFIG
+ // Visible in ginput_lld_toggle.c
+
+ const GToggleConfig GInputToggleConfigTable[GINPUT_TOGGLE_CONFIG_ENTRIES] = {
+ {AT91C_BASE_PIOB, // Switch 1 and Switch 2
+ PIOB_SW1_MASK|PIOB_SW2_MASK,
+ PIOB_SW1_MASK|PIOB_SW2_MASK,
+ PAL_MODE_INPUT},
+ {AT91C_BASE_PIOA, // B1..4 Joystick
+ PIOA_B1_MASK|PIOA_B2_MASK|PIOA_B3_MASK|PIOA_B4_MASK|PIOA_B5_MASK,
+ PIOA_B1_MASK|PIOA_B2_MASK|PIOA_B3_MASK|PIOA_B4_MASK|PIOA_B5_MASK,
+ PAL_MODE_INPUT},
+ };
+
+#endif
+
+#endif /* _GDISP_LLD_TOGGLE_BOARD_H */
+/** @} */
diff --git a/drivers/ginput/toggle/Pal/ginput_lld_toggle_config.h b/drivers/ginput/toggle/Pal/ginput_lld_toggle_config.h
new file mode 100644
index 00000000..f58221f9
--- /dev/null
+++ b/drivers/ginput/toggle/Pal/ginput_lld_toggle_config.h
@@ -0,0 +1,44 @@
+/*
+ ChibiOS/RT - Copyright (C) 2012
+ Joel Bodenmann aka Tectu <joel@unormal.org>
+
+ This file is part of ChibiOS/GFX.
+
+ ChibiOS/GFX is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ ChibiOS/GFX is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * @file drivers/ginput/togglePal/ginput_lld_toggle_config.h
+ * @brief GINPUT Toggle Driver configuration header.
+ *
+ * @addtogroup GDISP
+ * @{
+ */
+
+#ifndef _GINPUT_LLD_TOGGLE_CONFIG_H
+#define _GINPUT_LLD_TOGGLE_CONFIG_H
+
+#if GFX_USE_GINPUT && GINPUT_NEED_TOGGLE
+
+#if defined(BOARD_OLIMEX_SAM7_EX256)
+ #include "ginput_lld_toggle_board_olimexsam7ex256.h"
+#else
+ /* Include the user supplied board definitions */
+ #include "ginput_lld_toggle_board.h"
+#endif
+
+#endif /* GFX_USE_GDISP && GINPUT_NEED_TOGGLE */
+
+#endif /* _GINPUT_LLD_TOGGLE_CONFIG_H */
+/** @} */
diff --git a/drivers/ginput/toggle/Pal/readme.txt b/drivers/ginput/toggle/Pal/readme.txt
new file mode 100644
index 00000000..e6976f7d
--- /dev/null
+++ b/drivers/ginput/toggle/Pal/readme.txt
@@ -0,0 +1,13 @@
+To use this driver:
+
+1. Add in your halconf.h:
+ a) #define GFX_USE_GINPUT TRUE
+ #define GINPUT_NEED_TOGGLE TRUE
+ d) If you are not using a known board then create a ginput_lld_toggle_board.h file
+ and ensure it is on your include path.
+ Use the ginput_lld_toggle_board_example.h file as a basis.
+ Currently known boards are:
+ Olimex SAM7-EX256
+
+2. To your makefile add the following lines:
+ include $(GFXLIB)/drivers/ginput/togglePal/ginput_lld.mk