| /* |
| * cyttsp5_core.h |
| * Parade TrueTouch(TM) Standard Product V5 Core Module. |
| * For use with Parade touchscreen controllers. |
| * Supported parts include: |
| * CYTMA5XX |
| * CYTMA448 |
| * CYTMA445A |
| * CYTT21XXX |
| * CYTT31XXX |
| * |
| * Copyright (C) 2015 Parade Semiconductor |
| * Copyright (C) 2012-2015 Cypress Semiconductor |
| * |
| * This program is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU General Public License |
| * version 2, and only version 2, as published by the |
| * Free Software Foundation. |
| * |
| * 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. |
| * |
| * Contact Parade Semiconductor at www.parade.com <ttdrivers@paradetech.com> |
| * |
| */ |
| |
| #ifndef _LINUX_CYTTSP5_CORE_H |
| #define _LINUX_CYTTSP5_CORE_H |
| |
| #include <linux/stringify.h> |
| |
| #define CYTTSP5_I2C_NAME "cyttsp5_i2c_adapter" |
| #define CYTTSP5_SPI_NAME "cyttsp5_spi_adapter" |
| |
| #define CYTTSP5_CORE_NAME "cyttsp5_core" |
| #define CYTTSP5_MT_NAME "cyttsp5_mt" |
| #define CYTTSP5_BTN_NAME "cyttsp5_btn" |
| #define CYTTSP5_PROXIMITY_NAME "cyttsp5_proximity" |
| |
| #define CY_DRIVER_NAME TTDA |
| #define CY_DRIVER_MAJOR 03 |
| #define CY_DRIVER_MINOR 08 |
| |
| #define CY_DRIVER_REVCTRL 874312 |
| |
| #define CY_DRIVER_VERSION \ |
| __stringify(CY_DRIVER_NAME) \ |
| "." __stringify(CY_DRIVER_MAJOR) \ |
| "." __stringify(CY_DRIVER_MINOR) \ |
| "." __stringify(CY_DRIVER_REVCTRL) |
| |
| #define CY_DRIVER_DATE "20170125" |
| |
| /* abs settings */ |
| #define CY_IGNORE_VALUE -1 |
| |
| enum cyttsp5_core_platform_flags { |
| CY_CORE_FLAG_NONE, |
| CY_CORE_FLAG_POWEROFF_ON_SLEEP = 0x02, |
| CY_CORE_FLAG_RESTORE_PARAMETERS = 0x04, |
| }; |
| |
| enum cyttsp5_core_platform_easy_wakeup_gesture { |
| CY_CORE_EWG_NONE, |
| CY_CORE_EWG_TAP_TAP, |
| CY_CORE_EWG_TWO_FINGER_SLIDE, |
| CY_CORE_EWG_RESERVED, |
| CY_CORE_EWG_WAKE_ON_INT_FROM_HOST = 0xFF, |
| }; |
| |
| enum cyttsp5_loader_platform_flags { |
| CY_LOADER_FLAG_NONE, |
| CY_LOADER_FLAG_CALIBRATE_AFTER_FW_UPGRADE, |
| /* Use CONFIG_VER field in TT_CFG to decide TT_CFG update */ |
| CY_LOADER_FLAG_CHECK_TTCONFIG_VERSION, |
| CY_LOADER_FLAG_CALIBRATE_AFTER_TTCONFIG_UPGRADE, |
| }; |
| |
| struct touch_settings { |
| const uint8_t *data; |
| uint32_t size; |
| uint8_t tag; |
| }; |
| |
| struct cyttsp5_touch_firmware { |
| const uint8_t *img; |
| uint32_t size; |
| const uint8_t *ver; |
| uint8_t vsize; |
| uint8_t panel_id; |
| }; |
| |
| struct cyttsp5_touch_config { |
| struct touch_settings *param_regs; |
| struct touch_settings *param_size; |
| const uint8_t *fw_ver; |
| uint8_t fw_vsize; |
| uint8_t panel_id; |
| }; |
| |
| struct cyttsp5_loader_platform_data { |
| struct cyttsp5_touch_firmware *fw; |
| struct cyttsp5_touch_config *ttconfig; |
| struct cyttsp5_touch_firmware **fws; |
| struct cyttsp5_touch_config **ttconfigs; |
| u32 flags; |
| }; |
| |
| typedef int (*cyttsp5_platform_read) (struct device *dev, void *buf, int size); |
| |
| #define CY_TOUCH_SETTINGS_MAX 32 |
| |
| struct cyttsp5_core_platform_data { |
| int irq_gpio; |
| int rst_gpio; |
| int level_irq_udelay; |
| u16 hid_desc_register; |
| u16 vendor_id; |
| u16 product_id; |
| |
| int (*xres)(struct cyttsp5_core_platform_data *pdata, |
| struct device *dev); |
| int (*init)(struct cyttsp5_core_platform_data *pdata, |
| int on, struct device *dev); |
| int (*power)(struct cyttsp5_core_platform_data *pdata, |
| int on, struct device *dev, atomic_t *ignore_irq); |
| int (*detect)(struct cyttsp5_core_platform_data *pdata, |
| struct device *dev, cyttsp5_platform_read read); |
| int (*irq_stat)(struct cyttsp5_core_platform_data *pdata, |
| struct device *dev); |
| struct touch_settings *sett[CY_TOUCH_SETTINGS_MAX]; |
| u32 flags; |
| u8 easy_wakeup_gesture; |
| }; |
| |
| struct touch_framework { |
| const int16_t *abs; |
| uint8_t size; |
| uint8_t enable_vkeys; |
| } __packed; |
| |
| enum cyttsp5_mt_platform_flags { |
| CY_MT_FLAG_NONE, |
| CY_MT_FLAG_HOVER = 0x04, |
| CY_MT_FLAG_FLIP = 0x08, |
| CY_MT_FLAG_INV_X = 0x10, |
| CY_MT_FLAG_INV_Y = 0x20, |
| CY_MT_FLAG_VKEYS = 0x40, |
| CY_MT_FLAG_NO_TOUCH_ON_LO = 0x80, |
| }; |
| |
| struct cyttsp5_mt_platform_data { |
| struct touch_framework *frmwrk; |
| unsigned short flags; |
| char const *inp_dev_name; |
| int vkeys_x; |
| int vkeys_y; |
| }; |
| |
| struct cyttsp5_btn_platform_data { |
| char const *inp_dev_name; |
| }; |
| |
| struct cyttsp5_proximity_platform_data { |
| struct touch_framework *frmwrk; |
| char const *inp_dev_name; |
| }; |
| |
| struct cyttsp5_platform_data { |
| struct cyttsp5_core_platform_data *core_pdata; |
| struct cyttsp5_mt_platform_data *mt_pdata; |
| struct cyttsp5_btn_platform_data *btn_pdata; |
| struct cyttsp5_proximity_platform_data *prox_pdata; |
| struct cyttsp5_loader_platform_data *loader_pdata; |
| }; |
| |
| #endif /* _LINUX_CYTTSP5_CORE_H */ |