1 /*---------------------------------------------------------------------------------------------------------
2 * kernel/include/linux/goodix_queue.h
4 * Copyright(c) 2010 Goodix Technology Corp. All rights reserved.
8 *---------------------------------------------------------------------------------------------------------*/
11 * 适用于Goodix的Guitar小屏驱动
12 * 调整手指上报顺序以避免出现手指ID交换现象
15 #ifndef _LINUX_GOODIX_QUEUE_H
16 #define _LINUX_GOODIX_QUEUE_H
17 #include <linux/goodix_touch.h>
31 struct point_node pointer[MAX_FINGER_NUM];
35 /*******************************************************
40 ********************************************************/
41 static void del_point(struct point_queue *point_list)
43 int count = point_list->length-1;
45 for(; count >= 0; count--) //note: must search from tail to head
46 if(point_list->pointer[count].state == FLAG_UP)
48 if(point_list->length == 0 )
51 for(; position < MAX_FINGER_NUM -1; position++)
52 point_list->pointer[position] = point_list->pointer[position+1];
57 /*******************************************************
65 ********************************************************/
66 static int add_point(struct point_queue *point_list, int num)
68 if(point_list->length >= MAX_FINGER_NUM || num < 0 )
70 point_list->pointer[point_list->length].num = num;
71 point_list->pointer[point_list->length].state = FLAG_DOWN;
76 /*******************************************************
84 ********************************************************/
85 static int search_point(struct point_queue *point_list, int num)
88 if(point_list->length <= 0 || num < 0 || num > MAX_FINGER_NUM)
90 for(; count < point_list->length; count++)
91 if(point_list->pointer[count].num == num)
97 /*******************************************************
105 ********************************************************/
106 static int set_up_point(struct point_queue *point_list, int num)
109 if(point_list->length <= 0 || num < 0 || num > MAX_FINGER_NUM)
111 number = search_point(point_list, num);
114 point_list->pointer[number].state = FLAG_UP;
120 #endif /* _LINUX_GOODIX_QUEUE_H */