| /* a96t3x6.h -- Linux driver for A96T3X6 chip as grip sensor |
| * |
| * Copyright (C) 2017 Samsung Electronics Co.Ltd |
| * Author: YunJae Hwang <yjz.hwang@samsung.com> |
| * |
| * 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, 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. |
| * |
| */ |
| |
| #ifndef __LINUX_A96T3X6_H |
| #define __LINUX_A96T3X6_H |
| |
| //#include <linux/sensor/sensors_core.h> |
| |
| #define VENDOR_NAME "ABOV" |
| #define MODEL_NAME "A96T3X6" |
| #define MODULE_NAME "grip_sensor" |
| |
| #define NOTIFY_CABLE_USB_FAST 0x01 |
| #define NOTIFY_CABLE_OTG 0x03 |
| #define NOTIFY_CABLE_USB_NORMAL 0x04 |
| #define NOTIFY_CABLE_TA 0x25 |
| #define NOTIFY_CABLE_TA_FAC 0x27 |
| |
| /* registers */ |
| #ifdef CONFIG_SENSORS_A96T3X6_2CH |
| #define REG_LED_CONTROL 0x00 |
| #define REG_FW_VER 0x01 |
| #define REG_THRESHOLD 0x02 |
| #define REG_BTNSTATUS 0x07 |
| #define REG_SAR_TOTALCAP_READ 0x0A |
| #define REG_SAR_TOTALCAP_READ_2CH 0x0C |
| #define REG_RAWDATA 0x0E |
| #define REG_VENDORID 0x12 |
| #define REG_GLOVE 0x13 |
| #define REG_TSPTA 0x13 |
| #define REG_MODEL_NO 0x14 |
| #define REG_SAR_TOTALCAP 0x16 |
| #define REG_SAR_MODE 0x17 |
| #define REG_SW_RESET 0x1A |
| #define REG_SAR_ENABLE 0x24 |
| #define REG_SAR_SENSING 0x25 |
| #define REG_SAR_NOISE_THRESHOLD 0x26 |
| #define REG_SAR_NOISE_THRESHOLD_2CH 0x28 |
| #define REG_SAR_THRESHOLD 0x2A |
| #define REG_SAR_THRESHOLD_2CH 0x2C |
| #define REG_SAR_RELEASE_THRESHOLD 0x2E |
| #define REG_SAR_RELEASE_THRESHOLD_2CH 0x30 |
| #define REG_SAR_RAWDATA 0x32 |
| #define REG_SAR_RAWDATA_2CH 0x34 |
| #define REG_SAR_BASELINE 0x36 |
| #define REG_SAR_BASELINE_2CH 0x38 |
| #define REG_SAR_DIFFDATA 0x3A |
| #define REG_SAR_DIFFDATA_D_2CH 0x3C |
| #else |
| #define REG_LED_CONTROL 0x00 |
| #define REG_FW_VER 0x01 |
| #define REG_THRESHOLD 0x02 |
| #define REG_BTNSTATUS 0x07 |
| #define REG_DIFFDATA 0x0A |
| #define REG_RAWDATA 0x0E |
| #define REG_VENDORID 0x12 |
| #define REG_GLOVE 0x13 |
| #define REG_TSPTA 0x13 |
| #define REG_MODEL_NO 0x14 |
| #define REG_SAR_TOTALCAP 0x16 |
| #define REG_SAR_MODE 0x17 |
| #define REG_SAR_TOTALCAP_READ 0x18 |
| #define REG_SW_RESET 0x1A |
| #define REG_SAR_ENABLE 0x24 |
| #define REG_SAR_SENSING 0x25 |
| #define REG_SAR_NOISE_THRESHOLD 0x26 |
| #define REG_SAR_BASELINE 0x28 |
| #define REG_SAR_DIFFDATA 0x2A |
| #define REG_SAR_DIFFDATA_D 0x2C |
| #define REG_SAR_RAWDATA 0x2E |
| #define REG_SAR_RAWDATA_D 0x30 |
| #define REG_SAR_THRESHOLD 0x32 |
| #endif |
| |
| #define REG_REF_CAP 0x50 |
| #define REG_GAINDATA 0x52 |
| #ifdef CONFIG_SENSORS_A96T3X6_2CH |
| #define REG_GAINDATA_2CH 0x55 |
| #endif |
| #define REG_REF_GAINDATA 0x58 |
| |
| #define REG_DATA_UPDATE 0x40 |
| #define REG_MODE_CHECK 0x41 |
| #define REG_LED_CTRL_ON 0x60 |
| #define REG_LED_CTRL_OFF 0x70 |
| #define REG_STOP_MODE 0x80 |
| #define REG_GRIP_ALWAYS_ACTIVE 0x20 |
| #define GRIP_ALWAYS_ACTIVE_READY 0x21 |
| |
| /* command */ |
| #define CMD_ON 0x20 |
| #define CMD_OFF 0x10 |
| #define CMD_SW_RESET 0x10 |
| |
| #define BOOT_DELAY 45000 |
| #define RESET_DELAY 150000 |
| #define FLASH_DELAY 1400000 |
| #define FLASH_MODE 0x18 |
| #define CRC_FAIL 0 |
| #define CRC_PASS 1 |
| |
| |
| #define TK_FW_PATH_BIN "abov/abov_noble.fw" |
| #define TK_FW_PATH_SDCARD "/sdcard/Firmware/Grip/abov_fw.bin" |
| #define HALL_PATH "/sys/class/sec/hall_ic/hall_detect" |
| #define HALLIC_CERT_PATH "/sys/class/sec/haii_ic/certify_hall_detect" |
| #define HALL_CLOSE_STATE 1 |
| |
| /* depends on FW address configuration */ |
| #ifdef CONFIG_SENSORS_A96T365IF |
| #define USER_CODE_ADDRESS 0x600 |
| #else |
| #define USER_CODE_ADDRESS 0x800 |
| #endif |
| |
| #define I2C_M_WR 0 /* for i2c */ |
| #define GRIP_LOG_TIME 15 /* 30s */ |
| |
| #define FIRMWARE_VENDOR_CALL_CNT 8 |
| #define TEST_FIRMWARE_DETECT_VER 0xa0 |
| |
| enum { |
| BUILT_IN = 0, |
| SDCARD, |
| }; |
| |
| #define GRIP_ERR(fmt, ...) pr_err("[GRIP] %s: "fmt, __func__, ##__VA_ARGS__) |
| #define GRIP_INFO(fmt, ...) pr_info("[GRIP] %s: "fmt, __func__, ##__VA_ARGS__) |
| #define GRIP_WARN(fmt, ...) pr_warn("[GRIP] %s: "fmt, __func__, ##__VA_ARGS__) |
| |
| extern int sensors_create_symlink(struct input_dev *inputdev); |
| extern void sensors_remove_symlink(struct input_dev *inputdev); |
| extern int sensors_register(struct device *dev, void *drvdata, |
| struct device_attribute *attributes[], char *name); |
| extern void sensors_unregister(struct device *dev, |
| struct device_attribute *attributes[]); |
| |
| #endif /* LINUX_A96T3X6_H */ |