| /* |
| * Copyright (C) 2011-2014 MediaTek Inc. |
| * |
| * This program is free software: you can redistribute it and/or modify it under the terms of the |
| * GNU General Public License version 2 as published by the Free Software Foundation. |
| * |
| * 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. |
| * |
| * You should have received a copy of the GNU General Public License along with this program. |
| * If not, see <http://www.gnu.org/licenses/>. |
| */ |
| |
| #ifndef TPD_DEBUG_H |
| #define TPD_DEBUG_H |
| #ifdef TPD_DEBUG_CODE |
| #include<linux/i2c.h> |
| |
| void tpd_debug_no_response(struct i2c_client *); |
| extern int tpd_debug_nr; |
| |
| #define TPD_DEBUG_CHECK_NO_RESPONSE \ |
| if(tpd_debug_nr) { \ |
| wait_event_interruptible_timeout(waiter,tpd_flag!=0,HZ/10); \ |
| if(tpd_flag==0) { \ |
| tpd_debug_no_response(i2c_client); \ |
| continue; \ |
| } \ |
| } else |
| |
| |
| void tpd_debug_set_time(void); |
| extern int tpd_debug_time; |
| extern long tpd_last_2_int_time[2]; |
| extern long tpd_last_down_time; |
| extern int tpd_start_profiling; |
| extern int tpd_down_status; |
| |
| #define TPD_DEBUG_PRINT_INT \ |
| do { \ |
| if(tpd_debug_time) { \ |
| printk("tp_int\n"); \ |
| } \ |
| } while(0) |
| |
| #define TPD_DEBUG_PRINT_UP \ |
| do { \ |
| if(pending==0 && tpd_debug_time) { \ |
| tpd_down_status=0; \ |
| printk("up on %ld ms (+%ld ms)\n", \ |
| (tpd_last_2_int_time[1] - tpd_last_down_time) / 1000, \ |
| (tpd_last_2_int_time[1] - tpd_last_2_int_time[0]) / 1000); \ |
| } \ |
| } while(0) |
| |
| #define TPD_DEBUG_PRINT_DOWN \ |
| do { \ |
| if(tpd_debug_time) { \ |
| if(tpd_down_status==0) printk("down on 0 ms\n"); \ |
| else printk("move on %ld ms (+%ld ms)\n", \ |
| (tpd_last_2_int_time[1] - tpd_last_down_time) / 1000, \ |
| (tpd_last_2_int_time[1] - tpd_last_2_int_time[0]) / 1000); \ |
| tpd_down_status=1; \ |
| } \ |
| } while(0) |
| |
| #define TPD_DEBUG_SET_TIME do { tpd_debug_set_time(); } while(0); |
| |
| extern int tpd_em_log; |
| extern int tpd_em_log_to_fs; |
| extern int tpd_type_cap; |
| |
| void tpd_em_log_output(int raw_x, int raw_y, int cal_x, int cal_y, int p, int down); |
| void tpd_em_log_store(int raw_x, int raw_y, int cal_x, int cal_y, int p, int down); |
| void tpd_em_log_release(void); |
| |
| #define TPD_TYPE_RAW_DATA 2 |
| #define TPD_TYPE_INT_DOWN 3 |
| #define TPD_TYPE_INT_UP 4 |
| #define TPD_TYPE_TIMER 5 |
| #define TPD_TYPE_REJECT1 6 |
| #define TPD_TYPE_REJECT2 7 |
| #define TPD_TYPE_FIST_LATENCY 8 |
| |
| #define TPD_EM_PRINT(raw_x, raw_y, cal_x, cal_y, p, down) \ |
| do { \ |
| if (tpd_em_log) { \ |
| if (!tpd_em_log_to_fs) { \ |
| tpd_em_log_output(raw_x, raw_y, cal_x, cal_y, p, down); \ |
| } else { \ |
| tpd_em_log_store(raw_x, raw_y, cal_x, cal_y, p, down); \ |
| tpd_em_log_output(raw_x, raw_y, cal_x, cal_y, p, down); \ |
| } \ |
| if (down == 1) \ |
| tpd_down_status = 1; \ |
| else if (down == 0) \ |
| tpd_down_status = 0; \ |
| } \ |
| else { \ |
| if (tpd_em_log_to_fs) { \ |
| tpd_em_log_release(); \ |
| } \ |
| } \ |
| } while(0) |
| |
| #ifdef TPD_DEBUG_TRACK |
| extern void *dal_fb_addr; |
| extern int tpd_debug_track; |
| void tpd_up_debug_track(int x, int y); |
| void tpd_down_debug_track(int x, int y); |
| #define TPD_UP_DEBUG_TRACK(x,y) do { if(tpd_debug_track) tpd_up_debug_track(x,y); }while(0) |
| #define TPD_DOWN_DEBUG_TRACK(x,y) do { if(tpd_debug_track) tpd_down_debug_track(x,y); }while(0) |
| |
| #endif // TPD_DEBUG_TRACK |
| #endif // TPD_DEBUG_CODE |
| |
| // Macros that will be embedded in code |
| |
| #ifndef TPD_DEBUG_CHECK_NO_RESPONSE |
| #define TPD_DEBUG_CHECK_NO_RESPONSE |
| #endif |
| |
| #ifndef TPD_DEBUG_SET_TIME |
| #define TPD_DEBUG_SET_TIME |
| #endif |
| |
| #ifndef TPD_DEBUG_PRINT_UP |
| #define TPD_DEBUG_PRINT_UP |
| #endif |
| |
| #ifndef TPD_DEBUG_PRINT_DOWN |
| #define TPD_DEBUG_PRINT_DOWN |
| #endif |
| |
| #ifndef TPD_UP_DEBUG_TRACK |
| #define TPD_UP_DEBUG_TRACK(x,y) |
| #endif |
| |
| #ifndef TPD_DOWN_DEBUG_TRACK |
| #define TPD_DOWN_DEBUG_TRACK(x,y) |
| #endif |
| |
| |
| #endif // TPD_DEBUG_H |