Merge tag 'v3.10.55' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm / mach-mt8127 / tcl8127_tb_c_l / touchpanel / tpd_calibrate.c
1 #include "tpd.h"
2 //#ifdef TPD_HAVE_CALIBRATION
3
4 //#ifndef TPD_CUSTOM_CALIBRATION
5
6 //#if (defined(TPD_WARP_START) && defined(TPD_WARP_END))
7 //#define TPD_DO_WARP
8 int TPD_DO_WARP = 0;
9 int tpd_wb_start[TPD_WARP_CNT] = {0};
10 int tpd_wb_end[TPD_WARP_CNT] = {0};
11
12 void tpd_warp_calibrate(int *x, int *y) {
13 int wx = *x, wy = *y;
14 if(wx<tpd_wb_start[0] && tpd_wb_start[0]>0) {
15 wx = tpd_wb_start[0]-((tpd_wb_start[0]-wx)*(tpd_wb_start[0]-tpd_wb_end[0])/(tpd_wb_start[0]));
16 //wx = wx*(tpd_wb_start[0]-tpd_wb_end[0])/tpd_wb_start[0]+tpd_wb_end[0];
17 }
18 else if(wx>tpd_wb_start[2])
19 wx = (wx-tpd_wb_start[2])*(tpd_wb_end[2]-tpd_wb_start[2])/(TPD_RES_X-tpd_wb_start[2])+tpd_wb_start[2];
20
21 if(wy<tpd_wb_start[1] && tpd_wb_start[1]>0)
22 wy = tpd_wb_start[1]-((tpd_wb_start[1]-wy)*(tpd_wb_start[1]-tpd_wb_end[1])/(tpd_wb_start[1]));
23 //wy = wy*(tpd_wb_start[1]-tpd_wb_end[1])/tpd_wb_start[1]+tpd_wb_end[1];
24 else if(wy>tpd_wb_start[3] && wy<=TPD_RES_Y)
25 wy = (wy-tpd_wb_start[3])*(tpd_wb_end[3]-tpd_wb_start[3])/(TPD_RES_Y-tpd_wb_start[3])+tpd_wb_start[3];
26 if(wy<0) wy=0;
27 if(wx<0) wx=0;
28 *x = wx, *y = wy;
29 }
30 //#else
31 //#define tpd_warp_calibrate(x,y)
32 //#endif
33
34 void tpd_calibrate(int *x, int *y) {
35 int tx, i;
36 if(tpd_calmat[0]==0) for(i=0;i<6;i++) tpd_calmat[i]=tpd_def_calmat[i];
37 /* ================ calibrating ================*/
38 tx = ((tpd_calmat[0]*(*x))+(tpd_calmat[1]*(*y))+(tpd_calmat[2]))>>12;
39 *y = ((tpd_calmat[3]*(*x))+(tpd_calmat[4]*(*y))+(tpd_calmat[5]))>>12;
40 *x = tx;
41
42 if(TPD_DO_WARP == 1) tpd_warp_calibrate(x, y);
43 *x = (*x) + ((*y)*(*x)*tpd_calmat[6]/TPD_RES_X)/TPD_RES_Y;
44 *y = (*y) + ((*y)*(*x)*tpd_calmat[7]/TPD_RES_X)/TPD_RES_Y;
45 }
46
47 //#endif
48
49 //#endif
50