123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- /*
- * File : focaltech_ts.h
- * This file is part of RT-Thread RTOS
- * COPYRIGHT (C) 2006 - 2017, RT-Thread Development Team
- *
- * This program 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 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Change Logs:
- * Date Author Notes
- * 2017-01-01 Urey first version
- */
- #ifndef _FOCALTECH_TS_H_
- #define _FOCALTECH_TS_H_
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include <stdint.h>
- /* -- dirver configure -- */
- #define FTS_SLAVE_ADDR (0x70 >> 1)
- #define CFG_MAX_TOUCH_POINTS 10
- #define FTS_PRESS_MAX 0xFF
- #define FTS_PRESS 0x08
- #define FTS_NAME "FTS"
- #define FTS_INPUT_DEV_NAME "focal-touchscreen"
- #define FTS_MAX_ID 0x0F
- #define FTS_TOUCH_STEP 6
- #define FTS_TOUCH_X_H_POS 3
- #define FTS_TOUCH_X_L_POS 4
- #define FTS_TOUCH_Y_H_POS 5
- #define FTS_TOUCH_Y_L_POS 6
- #define FTS_TOUCH_XY_POS 7
- #define FTS_TOUCH_MISC 8
- #define FTS_TOUCH_EVENT_POS 3
- #define FTS_TOUCH_ID_POS 5
- #define FT_TOUCH_POINT_NUM 2
- #define POINT_READ_BUF (3 + FTS_TOUCH_STEP * CFG_MAX_TOUCH_POINTS)
- /*register address*/
- #define FTS_REG_CHIP_ID 0xA3 //chip ID
- #define FTS_REG_FW_VER 0xA6
- #define FTS_REG_POINT_RATE 0x88
- #define FTS_REG_THGROUP 0x80
- #define FTS_REG_VENDOR_ID 0xA8
- #define FTS_ENABLE_IRQ 1
- #define FTS_DISABLE_IRQ 0
- #define TPD_MAX_POINTS_2 2
- #define TPD_MAX_POINTS_5 5
- #define TPD_MAXPOINTS_10 10
- #define AUTO_CLB_NEED 1
- #define AUTO_CLB_NONEED 0
- #define TOUCH_SWAP_XY 1
- #define TOUCH_SWAP_X 0
- #define TOUCH_SWAP_Y 1
- struct Upgrade_Info
- {
- uint8_t CHIP_ID;
- uint8_t FTS_NAME_INFO[20];
- uint8_t TPD_MAX_POINTS;
- uint8_t AUTO_CLB;
- uint16_t delay_aa; /*delay of write FTS_UPGRADE_AA */
- uint16_t delay_55; /*delay of write FTS_UPGRADE_55 */
- uint8_t upgrade_id_1; /*upgrade id 1 */
- uint8_t upgrade_id_2; /*upgrade id 2 */
- uint16_t delay_readid; /*delay of read id */
- uint16_t delay_earse_flash; /*delay of earse flash*/
- };
- /* The platform data for the Focaltech focaltech touchscreen driver */
- struct fts_platform_data
- {
- uint32_t gpio_irq; /* IRQ port*/
- uint32_t irq_cfg;
- uint32_t gpio_wakeup; /* Wakeup support*/
- uint32_t wakeup_cfg;
- uint32_t gpio_reset; /* Reset support*/
- uint32_t reset_cfg;
- int screen_max_x;
- int screen_max_y;
- int pressure_max;
- };
- struct fts_event
- {
- uint16_t au16_x[CFG_MAX_TOUCH_POINTS]; /*x coordinate */
- uint16_t au16_y[CFG_MAX_TOUCH_POINTS]; /*y coordinate */
- uint8_t au8_touch_event[CFG_MAX_TOUCH_POINTS]; /*touch event:0 -- down; 1-- contact; 2 -- contact */
- uint8_t au8_finger_id[CFG_MAX_TOUCH_POINTS]; /*touch ID */
- uint8_t au8_finger_weight[CFG_MAX_TOUCH_POINTS]; /*touch weight */
- uint8_t pressure[CFG_MAX_TOUCH_POINTS];
- uint8_t area[CFG_MAX_TOUCH_POINTS];
- uint8_t touch_point;
- uint8_t touch_point_num;
- };
- struct focal_i2c_platform_data
- {
- uint16_t version;
- int abs_x_min;
- int abs_x_max;
- int abs_y_min;
- int abs_y_max;
- int intr_gpio;
- int rst_gpio;
- };
- struct fts_ts_data
- {
- uint8_t addr;
- uint8_t fw_ver; //firmware version
- uint32_t x_min,x_max;
- uint32_t y_min,y_max;
- uint32_t init_success;
- struct fts_event event;
- struct rt_i2c_bus_device *i2c_bus;
- struct rt_semaphore sem;
- int touchs;
- };
- void fts_ts_interrupt_cb(struct fts_ts_data *fts_ts);
- int fts_ts_probe(struct fts_ts_data *fts_ts,struct rt_i2c_bus_device *i2c_bus, const uint8_t addr);
- #ifdef __cplusplus
- }
- #endif
- #endif /* _FOCALTECH_TS_H_ */
|