From 18581a40deb63aba81b9f1f6ccd7e6d9163034fd Mon Sep 17 00:00:00 2001 From: Tectu Date: Thu, 9 Aug 2012 03:01:21 +0200 Subject: [PATCH] touchpad fix --- .../touchpad/touchpadXPT2046/touchpad_lld.c | 37 ++++++++-- .../touchpad/touchpadXPT2046/xpt2046_lld.c.h | 72 ------------------- 2 files changed, 31 insertions(+), 78 deletions(-) delete mode 100644 halext/drivers/touchpad/touchpadXPT2046/xpt2046_lld.c.h 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 - - 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 . -*/ - -#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 */ -