diff --git a/halext/drivers/touchpad/touchpadADS7843/touchpad_lld.c b/halext/drivers/touchpad/touchpadADS7843/touchpad_lld.c index 85db56e7..313fdb86 100644 --- a/halext/drivers/touchpad/touchpadADS7843/touchpad_lld.c +++ b/halext/drivers/touchpad/touchpadADS7843/touchpad_lld.c @@ -52,19 +52,11 @@ /* Driver exported variables. */ /*===========================================================================*/ -#if !defined(__DOXYGEN__) - TOUCHPADDriver Touchpad; -#endif /*===========================================================================*/ /* Driver local variables. */ /*===========================================================================*/ -static const SPIConfig spicfg = { - NULL, - TP_CS_PORT, - TP_CS, - SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0, -}; +static TOUCHPADDriver* tpDriver; /*===========================================================================*/ /* Driver local functions. */ @@ -86,7 +78,7 @@ static const SPIConfig spicfg = { * @notapi */ void tp_lld_init(TOUCHPADDriver *tp) { - spiStart(tp->spid, &spicfg); + spiStart(tp->spip, tp->spicfg); } /** @@ -100,10 +92,10 @@ uint16_t tp_lld_read_x(void) { uint16_t y; txbuf[0] = 0xd0; - TP_CS_LOW; + palClearPad(tpDriver->spicfg->ssport, tpDriver->spicfg->sspad); spiSend(&SPID1, 1, txbuf); spiReceive(&SPID1, 2, rxbuf); - TP_CS_HIGH; + palSetPad(tpDriver->spicfg->ssport, tpDriver->spicfg->sspad); y = rxbuf[0] << 4; y |= rxbuf[1] >> 4; @@ -122,10 +114,10 @@ uint16_t tp_lld_read_y(void) { uint16_t y; txbuf[0] = 0x90; - TP_CS_LOW; + palClearPad(tpDriver->spicfg->ssport, tpDriver->spicfg->sspad); spiSend(&SPID1, 1, txbuf); spiReceive(&SPID1, 2, rxbuf); - TP_CS_HIGH; + palSetPad(tpDriver->spicfg->ssport, tpDriver->spicfg->sspad); y = rxbuf[0] << 4; y |= rxbuf[1] >> 4; @@ -142,9 +134,9 @@ uint16_t tp_lld_read_y(void) { * * @noapi */ - uint8_t tp_lld_irq(void) { - return (!palReadPad(TP_IRQ_PORT, TP_IRQ)); - } + uint8_t tp_lld_irq(void) { + return (!palReadPad(tpDriver->tpIRQPort, tpDriver->tpIRQPin)); + } #endif #endif /* HAL_USE_TOUCHPAD */ diff --git a/halext/drivers/touchpad/touchpadXPT2046/touchpad_lld.c b/halext/drivers/touchpad/touchpadXPT2046/touchpad_lld.c index 00f6336c..876cb4ba 100644 --- a/halext/drivers/touchpad/touchpadXPT2046/touchpad_lld.c +++ b/halext/drivers/touchpad/touchpadXPT2046/touchpad_lld.c @@ -36,9 +36,6 @@ /* 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)) @@ -52,32 +49,27 @@ /* Driver exported variables. */ /*===========================================================================*/ -#if !defined(__DOXYGEN__) - TOUCHPADDriver Touchpad; -#endif /*===========================================================================*/ /* Driver local variables. */ /*===========================================================================*/ -static const SPIConfig spicfg = { - NULL, - TP_CS_PORT, - TP_CS, - SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0, -}; +static TOUCHPADDriver* tpDriver; /*===========================================================================*/ /* Driver local functions. */ /*===========================================================================*/ + /*===========================================================================*/ /* Driver interrupt handlers. */ /*===========================================================================*/ + /*===========================================================================*/ /* Driver exported functions. */ /*===========================================================================*/ + /* ---- Required Routines ---- */ /** @@ -86,7 +78,9 @@ static const SPIConfig spicfg = { * @notapi */ void tp_lld_init(TOUCHPADDriver *tp) { - spiStart(tp->spid, &spicfg); + tpDriver=tp; + + spiStart(tp->spip, tp->spicfg); } /** @@ -100,11 +94,10 @@ uint16_t tp_lld_read_x(void) { uint16_t y; txbuf[0] = 0xd0; - TP_CS_LOW; + palClearPad(tpDriver->spicfg->ssport, tpDriver->spicfg->sspad); spiSend(&SPID1, 1, txbuf); spiReceive(&SPID1, 2, rxbuf); - TP_CS_HIGH; - + palSetPad(tpDriver->spicfg->ssport, tpDriver->spicfg->sspad); y = rxbuf[0] << 4; y |= rxbuf[1] >> 4; @@ -122,10 +115,10 @@ uint16_t tp_lld_read_y(void) { uint16_t y; txbuf[0] = 0x90; - TP_CS_LOW; + palClearPad(tpDriver->spicfg->ssport, tpDriver->spicfg->sspad); spiSend(&SPID1, 1, txbuf); spiReceive(&SPID1, 2, rxbuf); - TP_CS_HIGH; + palSetPad(tpDriver->spicfg->ssport, tpDriver->spicfg->sspad); y = rxbuf[0] << 4; y |= rxbuf[1] >> 4; @@ -135,15 +128,15 @@ uint16_t tp_lld_read_y(void) { /* ---- Optional Routines ---- */ #if TOUCHPAD_HAS_IRQ || defined(__DOXYGEN__) - /* - * @brief for checking if touchpad is pressed or not. - * - * @return 1 if pressed / 0 if not pressed - * - * @noapi - */ + /* + * @brief for checking if touchpad is pressed or not. + * + * @return 1 if pressed / 0 if not pressed + * + * @noapi + */ uint8_t tp_lld_irq(void) { - return (!palReadPad(TP_IRQ_PORT, TP_IRQ)); + return (!palReadPad(tpDriver->tpIRQPort, tpDriver->tpIRQPin)); } #endif