void Reset(void) { unsigned char data; switchPage(0x00); data = 0x01; Write8BitRegisters(F01CommandBase, &data, 1); msleep(10); }
/* Function to handle report reads based on user input*/ int ReadReport(unsigned char input, char *buf) { int ret = 0; unsigned char data; /*Set the GetReport bit to run the AutoScan*/ data = 0x01; DO_SAFE(Write8BitRegisters(F54CommandBase, &data, 1), error); count = 0; do { DO_SAFE(Read8BitRegisters(F54CommandBase, &data, 1), error); msleep(1); count++; } while (data != 0x00 && (count < DefaultTimeout)); if (count >= DefaultTimeout) { TOUCH_LOG("Timeout - Not supported Report Type in FW\n"); Reset(); return -EAGAIN; } do_gettimeofday(&t_interval[ENDTIME]); TOUCH_LOG("Takes %lu ticks\n", get_time_interval(t_interval[ENDTIME].tv_sec, t_interval[STARTTIME].tv_sec)); switch (input) { case 'p': ret = ReadRT78(buf); break; case 'q': ret = GetImageRT78(buf); break; case 'r': ret = ReadElectodeShortRT78(buf); break; default: break; } return ret; error: TOUCH_ERR("[%s] ReadReport fail\n", __func__); return -EAGAIN; }
// Function to switch beteen register pages. bool switchPage(int page) { unsigned char values[1]; unsigned char data; pageNum = values[0] = page; count = 0; do { Write8BitRegisters(0xFF, values, 1); msleep(1); Read8BitRegisters(0xFF, &data, 1); count++; } while ((int)data != page && (count < DefaultTimeout)); if(count >= DefaultTimeout){ printk("Timeout -- Page switch fail ! \n"); return false; } return true; }
// Function to handle report reads based on user input int ReadReport(unsigned char input) { int ret = 0; unsigned char data; data = 0x01; Write8BitRegisters(F54CommandBase, &data, 1); count = 0; do { Read8BitRegisters(F54CommandBase, &data, 1); msleep(1); count++; } while (data != 0x00 && (count < DefaultTimeout)); if(count >= DefaultTimeout) { outbuf += sprintf(f54_wlog_buf+outbuf, "Timeout -- Not supported Report Type in FW\n"); Reset(); return ret; } do_gettimeofday(&t_interval[ENDTIME]); printk("Takes %lu ticks\n", get_time_interval(t_interval[ENDTIME].tv_sec,t_interval[STARTTIME].tv_sec)); switch (input){ case 'a': ret = ReadImageReport(); break; case 'b': ReadADCRangeReport(); break; case 'c': ReadSensorSpeedReport(); break; case 'd': // fprintk(stderr, "Press any key to continue after you have lowered the bar.\n"); // _getch(); ReadTRexOpenReport(); break; case 'e': ret = ReadTRexGroundReport(); break; case 'f': ret = ReadTRexShortReport(); break; case 'g': ret = ReadHighResistanceReport(); break; case 'h': ReadMaxMinReport(); break; case 'i': ReadAbsADCRangeReport(); break; case 'j': ReadAbsDeltaReport(); break; case 'k': ReadAbsRawReport(); break; default: break; } return ret; }