mcu_hi3321_watch/tjd/driver/tp/tp_port_ctrl.h
2025-05-26 20:15:20 +08:00

117 lines
2.6 KiB
C

/*----------------------------------------------------------------------------
* Copyright (c) TJD Technologies Co., Ltd. 2024. All rights reserved.
*
* Description: ft6146_ctrl.h
*
* Author: luziquan@ss-tjd.com
*
* Create: 2024-04-18
*--------------------------------------------------------------------------*/
#ifndef TP_PORT_CTRL_H
#define TP_PORT_CTRL_H
#include "platform_core.h"
#include "soc_errno.h"
#include "stdint.h"
#include "stdio.h"
typedef enum
{
TP_CHIP_FT6146 = 0,
TP_CHIP_CST820,
TP_CHIP_INVALID,
} tp_chip_type_t;
enum
{
EXT_WAKEUP_THRESHOLD = 0x90000001
};
/* host peripheral definitions */
#define FT6146_I2C_ADDR 0x38
#define CST820_I2C_ADDR 0x15
#define CST820_BOOT_I2C_ADDR 0x6A
#define TP_CMD_SEND_LEN 1
#define TP_REG_WRITE_LEN 2
#define TP_I2C_TIME_MAX 3
#define OFFSET_8_BITS 8
#define TP_I2C_SEND_INDEX0 0
#define TP_I2C_SEND_INDEX1 1
#define TP_I2C_SEND_INDEX3 2
#define TP_I2C_SEND_INDEX4 3
#define TP_INPUT_SIZE 156
#ifndef TD_TRUE
#define TD_TRUE 1
#endif
#ifndef TD_FALSE
#define TD_FALSE 0
#endif
typedef struct
{
uint32_t int_gpio;
i2c_bus_t i2c_id;
uint32_t i2c_speed;
} tp_ctrl_attr;
typedef ext_errno (*tp_bus_init)(tp_ctrl_attr *attr);
typedef ext_errno (*tp_esd_callback)(void);
typedef struct
{
tp_ctrl_attr attr;
tp_bus_init bus_init;
} tp_ctrl_ops;
typedef enum
{
TP_IRQ_DISABLE = 0,
TP_IRQ_ENABLE,
} tp_irq_status;
typedef enum
{
TP_WORK_NORMAL = 0,
TP_WORK_STANDBY,
TP_WORK_SLEEP,
TP_WORK_INVALID,
} tp_power_mode;
ext_errno device_touch_init(void *attr);
ext_errno tp_host_peripheral_init(tp_ctrl_attr *attr);
ext_errno tp_register_handle(const tp_ctrl_ops *peri_data, void *func);
ext_errno tp_unregister_handle(const tp_ctrl_ops *peri_data);
ext_errno tp_irq_callback(uint8_t *data_buf, uint8_t data_len);
void tp_reset(void);
void tp_open(void);
void tp_close(void);
void tp_delay(uint32_t ms);
typedef struct
{
uint8_t *send_buf;
uint32_t send_len;
} i2c_send_data_t;
typedef struct
{
uint8_t *receive_buf;
uint32_t receive_len;
} i2c_recv_data_t;
ext_errno tp_i2c_cmd_write(uint16_t dev_addr, uint8_t cmd);
ext_errno tp_i2c_reg_write(uint16_t dev_addr, uint32_t reg_addr, uint8_t reg_len, uint8_t reg_cfg);
ext_errno tp_i2c_data_write(uint16_t dev_addr, uint8_t reg_addr, uint8_t *data_buf, uint32_t data_len);
ext_errno tp_i2c_data_read(uint16_t dev_addr, uint32_t reg_addr, uint8_t reg_len, uint8_t *data_buf, uint16_t data_len);
ext_errno tp_i2c_package_write(uint16_t dev_addr, uint8_t *data_buf, uint32_t data_len);
#endif