diff options
author | Tectu <joel@unormal.org> | 2012-08-09 03:01:21 +0200 |
---|---|---|
committer | Tectu <joel@unormal.org> | 2012-08-09 03:01:21 +0200 |
commit | 18581a40deb63aba81b9f1f6ccd7e6d9163034fd (patch) | |
tree | fab926e56a114b9f6b6c7cf9944d7f5f7cd9946a /halext | |
parent | 55c8323950397d7bb6829f9fbd1a50a61d4913ce (diff) | |
download | uGFX-18581a40deb63aba81b9f1f6ccd7e6d9163034fd.tar.gz uGFX-18581a40deb63aba81b9f1f6ccd7e6d9163034fd.tar.bz2 uGFX-18581a40deb63aba81b9f1f6ccd7e6d9163034fd.zip |
touchpad fix
Diffstat (limited to 'halext')
-rw-r--r-- | halext/drivers/touchpad/touchpadXPT2046/touchpad_lld.c | 37 | ||||
-rw-r--r-- | halext/drivers/touchpad/touchpadXPT2046/xpt2046_lld.c.h | 72 |
2 files changed, 31 insertions, 78 deletions
diff --git a/halext/drivers/touchpad/touchpadXPT2046/touchpad_lld.c b/halext/drivers/touchpad/touchpadXPT2046/touchpad_lld.c index 4dc29dbe..a42f1bf8 100644 --- a/halext/drivers/touchpad/touchpadXPT2046/touchpad_lld.c +++ b/halext/drivers/touchpad/touchpadXPT2046/touchpad_lld.c @@ -36,6 +36,9 @@ /* Driver local definitions. */
/*===========================================================================*/
+#define TP_CS_HIGH palSetPad(TP_CS_PORT, TP_CS)
+#define TP_CS_LOW palClearPad(TP_CS_PORT, TP_CS)
+
#ifdef UNUSED
#elif defined(__GNUC__)
# define UNUSED(x) UNUSED_ ## x __attribute__((unused))
@@ -67,8 +70,6 @@ static const SPIConfig spicfg = { /* Driver local functions. */
/*===========================================================================*/
-#include "xpt2046_lld.c.h"
-
/*===========================================================================*/
/* Driver interrupt handlers. */
/*===========================================================================*/
@@ -94,8 +95,20 @@ void tp_lld_init(TOUCHPADDriver *tp) { * @notapi
*/
uint16_t tp_lld_read_x(void) {
- /* ToDo */
- return 42;
+ uint8_t txbuf[1];
+ uint8_t rxbuf[2];
+ uint16_t y;
+
+ txbuf[0] = 0x90;
+ TP_CS_LOW;
+ spiSend(&SPID1, 1, txbuf);
+ spiReceive(&SPID1, 2, rxbuf);
+ TP_CS_HIGH;
+
+ y = rxbuf[0] << 4;
+ y |= rxbuf[1] >> 4;
+
+ return y;
}
/*
@@ -104,8 +117,20 @@ uint16_t tp_lld_read_x(void) { * @notapi
*/
uint16_t tp_lld_read_y(void) {
- /* ToDo */
- return 42;
+ uint8_t txbuf[1];
+ uint8_t rxbuf[2];
+ uint16_t y;
+
+ txbuf[0] = 0x90;
+ TP_CS_LOW;
+ spiSend(&SPID1, 1, txbuf);
+ spiReceive(&SPID1, 2, rxbuf);
+ TP_CS_HIGH;
+
+ y = rxbuf[0] << 4;
+ y |= rxbuf[1] >> 4;
+
+ return y;
}
/* ---- Optional Routines ---- */
diff --git a/halext/drivers/touchpad/touchpadXPT2046/xpt2046_lld.c.h b/halext/drivers/touchpad/touchpadXPT2046/xpt2046_lld.c.h deleted file mode 100644 index 2b33034a..00000000 --- a/halext/drivers/touchpad/touchpadXPT2046/xpt2046_lld.c.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - ChibiOS-LCD-Driver - Copyright (C) 2012 - Joel Bodenmann aka Tectu <joel@unormal.org> - - This file is part of ChibiOS-LCD-Driver. - - ChibiOS-LCD-Driver 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-LCD-Driver 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/>. -*/ - -#ifndef _XPT2046_H -#define _XPT2046_H - -#include "ch.h" -#include "hal.h" - -#define TP_CS_HIGH palSetPad(TP_CS_PORT, TP_CS) -#define TP_CS_LOW palClearPad(TP_CS_PORT, TP_CS) - -__inline uint16_t lld_tpReadX(void) { - uint8_t txbuf[1]; - uint8_t rxbuf[2]; - uint16_t x; - - txbuf[0] = 0xd0; - TP_CS_LOW; - spiSend(&SPID1, 1, txbuf); - spiReceive(&SPID1, 2, rxbuf); - TP_CS_HIGH; - - x = rxbuf[0] << 4; - x |= rxbuf[1] >> 4; - - return x; -} - -__inline uint16_t lld_tpReadY(void) { - uint8_t txbuf[1]; - uint8_t rxbuf[2]; - uint16_t y; - - txbuf[0] = 0x90; - TP_CS_LOW; - spiSend(&SPID1, 1, txbuf); - spiReceive(&SPID1, 2, rxbuf); - TP_CS_HIGH; - - y = rxbuf[0] << 4; - y |= rxbuf[1] >> 4; - - return y; -} - -__inline uint16_t lld_tpReadZ(void) { - /* ToDo */ - - return 0; -} - - -#endif /* _XPT2046_H */ - |