drivers/lcd: Extend FT80x touchscreen initialization; add more touchscreen-related definitions.
This commit is contained in:
parent
b2d415da79
commit
eeb40dc600
@ -199,14 +199,18 @@ static void tsc_enable(FAR struct ads7843e_config_s *state, bool enable)
|
|||||||
flags = enter_critical_section();
|
flags = enter_critical_section();
|
||||||
if (enable && priv->handler)
|
if (enable && priv->handler)
|
||||||
{
|
{
|
||||||
/* Configure the EXTI interrupt using the SAVED handler */
|
/* Configure the EXTI interrupt using the saved handler */
|
||||||
|
|
||||||
(void)stm32_gpiosetevent(GPIO_LCDTP_IRQ, true, true, true,
|
(void)stm32_gpiosetevent(GPIO_LCDTP_IRQ, true, true, true,
|
||||||
priv->handler, NULL);
|
priv->handler, NULL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Configure the EXTI interrupt with a NULL handler to disable it */
|
/* Configure the EXTI interrupt with a NULL handler to disable it.
|
||||||
|
*
|
||||||
|
* REVISIT: There is a problem here... interrupts received while
|
||||||
|
* the EXTI is de-configured will not pend but will be lost.
|
||||||
|
*/
|
||||||
|
|
||||||
(void)stm32_gpiosetevent(GPIO_LCDTP_IRQ, false, false, false,
|
(void)stm32_gpiosetevent(GPIO_LCDTP_IRQ, false, false, false,
|
||||||
NULL, NULL);
|
NULL, NULL);
|
||||||
|
@ -202,9 +202,9 @@ static void ft80x_enable(FAR const struct ft80x_config_s *lower,
|
|||||||
flags = enter_critical_section();
|
flags = enter_critical_section();
|
||||||
if (enable && priv->handler)
|
if (enable && priv->handler)
|
||||||
{
|
{
|
||||||
/* Configure the EXTI interrupt using the SAVED handler */
|
/* Configure the EXTI interrupt using the saved handler */
|
||||||
|
|
||||||
(void)stm32_gpiosetevent(GPIO_LCDTP_IRQ, true, true, true,
|
(void)stm32_gpiosetevent(GPIO_FT80X_INT, true, true, true,
|
||||||
priv->handler, priv->arg);
|
priv->handler, priv->arg);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -212,10 +212,10 @@ static void ft80x_enable(FAR const struct ft80x_config_s *lower,
|
|||||||
/* Configure the EXTI interrupt with a NULL handler to disable it.
|
/* Configure the EXTI interrupt with a NULL handler to disable it.
|
||||||
*
|
*
|
||||||
* REVISIT: There is a problem here... interrupts received while
|
* REVISIT: There is a problem here... interrupts received while
|
||||||
* the EXIT is de-configured will not pend but will be lost.
|
* the EXTI is de-configured will not pend but will be lost.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(void)stm32_gpiosetevent(GPIO_LCDTP_IRQ, false, false, false,
|
(void)stm32_gpiosetevent(GPIO_FT80X_INT, false, false, false,
|
||||||
NULL, NULL);
|
NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1388,19 +1388,28 @@ static int ft80x_initialize(FAR struct ft80x_dev_s *priv)
|
|||||||
DEBUGASSERT(priv->lower->op_frequency <= 30000000);
|
DEBUGASSERT(priv->lower->op_frequency <= 30000000);
|
||||||
priv->frequency = priv->lower->op_frequency;
|
priv->frequency = priv->lower->op_frequency;
|
||||||
|
|
||||||
/* Configure touch threshold.
|
/* Configure touch mode. Using default touch mode of FRAME_SYNC (~60Hz) */
|
||||||
* REVISIT: For FT800 set REG_TOUCH_RZTHRESH to 1200.
|
|
||||||
*/
|
ft80x_write_byte(priv, FT80X_REG_TOUCH_MODE, TOUCH_MODE_FRAMESYNC);
|
||||||
|
|
||||||
#if defined(CONFIG_LCD_FT800)
|
#if defined(CONFIG_LCD_FT800)
|
||||||
/* Configure the REG_TOUCH_RZTHRESH the value 1200 may need to be tweaked
|
/* Configure the touch threshold. The value 1200 may need to be tweaked
|
||||||
* for your application.
|
* for your application.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ft80x_write_hword(priv, FT80X_REG_TOUCH_RZTHRESH, 1200);
|
ft80x_write_hword(priv, FT80X_REG_TOUCH_RZTHRESH, 1200);
|
||||||
|
|
||||||
#elif defined(CONFIG_LCD_FT801)
|
#elif defined(CONFIG_LCD_FT801)
|
||||||
# warning Missing logic
|
#ifdef CONFIG_LCD_FT801_MULTITOUCH
|
||||||
|
/* Selected extended mode */
|
||||||
|
|
||||||
|
ft80x_write_byte(priv, FT80X_REG_CTOUCH_EXTENDED, 0);
|
||||||
|
#else
|
||||||
|
/* Selected compatibility mode */
|
||||||
|
|
||||||
|
ft80x_write_byte(priv, FT80X_REG_CTOUCH_EXTENDED, 1);
|
||||||
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
# error No FT80x device configured
|
# error No FT80x device configured
|
||||||
#endif
|
#endif
|
||||||
|
@ -349,7 +349,7 @@
|
|||||||
/* 0x1024d0 – 0x1024d4 Reserved */
|
/* 0x1024d0 – 0x1024d4 Reserved */
|
||||||
# define FT80X_REG_CTOUCH_EXTENDED 0x1024f4 /* Set capacitive touch operation mode:
|
# define FT80X_REG_CTOUCH_EXTENDED 0x1024f4 /* Set capacitive touch operation mode:
|
||||||
* 0: extended mode (multi-touch)
|
* 0: extended mode (multi-touch)
|
||||||
* 0: 1: FT800 compatibility mode (single touch) */
|
* 1: FT800 compatibility mode (single touch) */
|
||||||
# define FT80X_REG_CTOUCH_REG 0x1024f8 /* CTPM configure register write
|
# define FT80X_REG_CTOUCH_REG 0x1024f8 /* CTPM configure register write
|
||||||
* Bits [7:0]: configure register address
|
* Bits [7:0]: configure register address
|
||||||
* Bits [15:8]: configure register value */
|
* Bits [15:8]: configure register value */
|
||||||
@ -415,6 +415,18 @@
|
|||||||
|
|
||||||
#define TOUCH_TAG_MASK 0xff /* Bits 0-7: Tag of touched graphic object */
|
#define TOUCH_TAG_MASK 0xff /* Bits 0-7: Tag of touched graphic object */
|
||||||
|
|
||||||
|
/* FT80X_REG_TOUCH_MODE */
|
||||||
|
|
||||||
|
#define TOUCH_MODE_OFF 0 /* Acquisition stopped, touch detection
|
||||||
|
* interrupt is still valid. */
|
||||||
|
#define TOUCH_MODE_ONESHOT 1 /* Perform acquisition once every write of 1
|
||||||
|
* to REG_TOUCH_MODE. */
|
||||||
|
#define TOUCH_MODE_FRAMESYNC 2 /* Perform acquisition for every frame sync
|
||||||
|
* (~60 data acquisition/second). */
|
||||||
|
#define TOUCH_MODE_CONTINUOUS 3 /* Perform acquisition continuously at
|
||||||
|
* approximately 1000 data acquisition /
|
||||||
|
* second. */
|
||||||
|
|
||||||
/* Interrupts *******************************************************************************/
|
/* Interrupts *******************************************************************************/
|
||||||
/* The interrupt output pin is enabled by REG_INT_EN. When REG_INT_EN is 0, INT_N is
|
/* The interrupt output pin is enabled by REG_INT_EN. When REG_INT_EN is 0, INT_N is
|
||||||
* tri-state (pulled to high by external pull-up resistor). When REG_INT_EN is 1, INT_N is
|
* tri-state (pulled to high by external pull-up resistor). When REG_INT_EN is 1, INT_N is
|
||||||
|
Loading…
x
Reference in New Issue
Block a user