Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef	_TS_CORE_H_ 
#define	_TS_CORE_H_ 

#include <linux/gpio.h>
#ifdef CONFIG_HAS_EARLYSUSPEND
#include <linux/earlysuspend.h>
#endif
#include "../tp_suspend.h"


/*vtl touch IC define*/
#define CT36X			0x01//(CT36X:ct362,ct363,ct365)
#define	CT360			0x02//(CT360:ct360)

/*xy data protocol*/
#define OLD_PROTOCOL		0x01
#define	NEW_PROTOCOL		0x02


/***********************vtl ts driver config ******************************************/

/*vtl chip ID*/
#define	CHIP_ID			CT36X//CT360//

#define	XY_DATA_PROTOCOL	NEW_PROTOCOL//OLD_PROTOCOL//

#define TS_I2C_SPEED		400000	    //for rockchip
/*
#if(TB1_USE_F402)
#define		XY_SWAP_ENABLE		1
#else
#define		XY_SWAP_ENABLE		0
#endif

#define		X_REVERSE_ENABLE	0

#if(TB1_USE_F402)
#define		Y_REVERSE_ENABLE	0
#else
#define		Y_REVERSE_ENABLE	1
#endif
*/

#define		CHIP_UPDATE_ENABLE	1

#define		DEBUG_ENABLE		0


/***********************vtl ts driver config  end******************************************/






























/*vtl ts driver name*/
#define DRIVER_NAME		"vtl_ts"
//#define DEBUG_ENABLE  1
#if(DEBUG_ENABLE)
#define 	DEBUG()				printk("___%s___\n",__func__);
//#define 	XY_DEBUG(id,status,x,y)		printk("id = %d,status = %d,X = %d,Y = %d\n",id,status,x,y);
#else   
#define		DEBUG()
//#define 	XY_DEBUG(id,status,x,y)
#endif

/*TOUCH_POINT_NUM define*/
#if(CHIP_ID == CT360)
#define	TOUCH_POINT_NUM		5
#elif(CHIP_ID == CT36X)
#define	TOUCH_POINT_NUM		10
#endif

/*priate define and declare*/
#if(CHIP_ID == CT360)
struct xy_data {
	#if(XY_DATA_PROTOCOL == OLD_PROTOCOL)
	unsigned char	status : 4; 		// Action information, 1: Down; 2: Move; 3: Up
	unsigned char	id : 4; 		// ID information, from 1 to CFG_MAX_POINT_NUM
	#endif
	unsigned char	xhi;			// X coordinate Hi
	unsigned char	yhi;			// Y coordinate Hi
	unsigned char	ylo : 4;		// Y coordinate Lo
	unsigned char	xlo : 4;		// X coordinate Lo
	#if(XY_DATA_PROTOCOL == NEW_PROTOCOL)
	unsigned char	status : 4;		// Action information, 1: Down; 2: Move; 3: Up
	unsigned char	id : 4;			// ID information, from 1 to CFG_MAX_POINT_NUM
	#endif
};
#else
struct xy_data {
	#if(XY_DATA_PROTOCOL == OLD_PROTOCOL)
	unsigned char	status : 3;		// Action information, 1: Down; 2: Move; 3: Up
	unsigned char	id : 5;			// ID information, from 1 to CFG_MAX_POINT_NUM
	#endif
	unsigned char	xhi;			// X coordinate Hi
	unsigned char	yhi;			// Y coordinate Hi
	unsigned char	ylo : 4;		// Y coordinate Lo
	unsigned char	xlo : 4;		// X coordinate Lo
	#if(XY_DATA_PROTOCOL == NEW_PROTOCOL)
	unsigned char	status : 3;		// Action information, 1: Down; 2: Move; 3: Up
	unsigned char	id : 5;			// ID information, from 1 to CFG_MAX_POINT_NUM
	#endif
	unsigned char	area;			// Touch area
	unsigned char	pressure;		// Touch Pressure
};
#endif


union ts_xy_data {
	struct xy_data	point[TOUCH_POINT_NUM];
	unsigned char	buf[TOUCH_POINT_NUM * sizeof(struct xy_data)];
};


struct ts_driver{

	struct i2c_client		*client;

	/* input devices */
	struct input_dev		*input_dev;			

	struct proc_dir_entry		*proc_entry;	

	struct task_struct 		*ts_thread;

	//#ifdef CONFIG_HAS_EARLYSUSPEND
	//struct early_suspend		early_suspend;
	//#endif
};

struct ts_config_info{      
        
        unsigned int	screen_max_x;
        unsigned int	screen_max_y;
        unsigned int	xy_swap;
        unsigned int	x_reverse;
        unsigned int	y_reverse;
        unsigned int	x_mul;
        unsigned int	y_mul;
		unsigned int	bin_ver;
	unsigned int	irq_gpio_number;
	unsigned int	irq_number;
        unsigned int	rst_gpio_number;
	unsigned char	touch_point_number;
	unsigned char	ctp_used;
	//unsigned char	i2c_bus_number;
        //unsigned char	revert_x_flag;
        //unsigned char	revert_y_flag;
        //unsigned char	exchange_x_y_flag;                  
};

struct	ts_info{
	
	struct ts_driver	*driver;
	struct ts_config_info	config_info;
	union ts_xy_data	xy_data;
	unsigned char 		debug;
	struct  tp_device  tp;
};


//extern struct ts_info	*pg_ts;
extern struct ts_info * vtl_ts_get_object(void);
extern void vtl_ts_hw_reset(void);

#endif