void touch_information_display(struct touch *ts) { #if 0 printk("--------------------------------------------------------\n"); printk(" TOUCH SCREEN INFORMATION\n"); printk("--------------------------------------------------------\n"); #endif touch_wake_control(ts); if(touch_i2c_read(ts->client, REG_TS_FIRMWARE_ID, 1, &ts->fw_version) == 1) printk("LGD TOUCH F/W Version = %d.%02d\n", ts->fw_version/100, ts->fw_version%100); #if 0 printk("TOUCH FINGRES MAX = %d\n", ts->pdata->max_fingers); printk("TOUCH ABS X MAX = %d, TOUCH ABS X MIN = %d\n", ts->pdata->abs_max_x, ts->pdata->abs_min_x); printk("TOUCH ABS Y MAX = %d, TOUCH ABS Y MIN = %d\n", ts->pdata->abs_max_y, ts->pdata->abs_min_y); if(ts->pdata->touch_max) printk("TOUCH MAJOR MAX = %d, TOUCH MAJOR MIN = %d\n", ts->pdata->touch_max, ts->pdata->touch_min); if(ts->pdata->width_max) printk("TOUCH WIDTH MAX = %d, TOUCH WIDTH MIN = %d\n", ts->pdata->width_max, ts->pdata->width_min); if(ts->pdata->id_max) printk("TOUCH ID MAX = %d, TOUCH ID MIN = %d\n", ts->pdata->id_max, ts->pdata->id_min); else printk("TOUCH ID MAX = %d, TOUCH ID MIN = %d\n", ts->pdata->max_fingers, 0); if(ts->pdata->gpio_init) printk("GPIO Early Init Function Implemented\n"); if(ts->pdata->reset_gpio) printk("H/W Reset Function Implemented\n"); if(ts->pdata->wake_gpio) printk("H/W Wake-up control Function Implemented\n"); printk("--------------------------------------------------------\n"); #endif }
//[*]--------------------------------------------------------------------------------------------------[*] // firmware version display //[*]--------------------------------------------------------------------------------------------------[*] static ssize_t show_fw_version (struct device *dev, struct device_attribute *attr, char *buf) { struct touch *ts = dev_get_drvdata(dev); if(!err_mask(ts->fw_status) && !(ts->fw_status & STATUS_BOOT_MODE)) { touch_disable(ts); touch_wake_control(ts); touch_i2c_read(ts->client, REG_TS_FIRMWARE_ID, 1, &ts->fw_version); touch_enable(ts); } return sprintf(buf, "%d\n", ts->fw_version); }
//[*]--------------------------------------------------------------------------------------------------[*] //[*]--------------------------------------------------------------------------------------------------[*] // disablel (1 -> disable irq, cancel work, 0 -> enable irq), show irq state //[*]--------------------------------------------------------------------------------------------------[*] static ssize_t show_idle (struct device *dev, struct device_attribute *attr, char *buf) { struct touch *ts = dev_get_drvdata(dev); unsigned char idle = 0; if(!err_mask(ts->fw_status) && !(ts->fw_status & STATUS_BOOT_MODE)) { touch_disable(ts); touch_wake_control(ts); if(touch_i2c_read(ts->client, REG_TS_IDLE_RD, 1, &idle) == 1) { touch_enable(ts); return sprintf(buf, "%d\n", idle); } touch_enable(ts); } return sprintf(buf, "%d\n", -1); }
//[*]--------------------------------------------------------------------------------------------------[*] static ssize_t store_idle (struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct touch *ts = dev_get_drvdata(dev); unsigned long val = 0; unsigned char idle = 0; int err; if ((err = strict_strtoul(buf, 10, &val))) return err; if (val > 255 && val < 0) idle = 0; else { idle = (unsigned char)val; if(!err_mask(ts->fw_status) && !(ts->fw_status & STATUS_BOOT_MODE)) { touch_disable(ts); touch_wake_control(ts); touch_i2c_write(ts->client, REG_TS_IDLE_WR, 1, &idle); touch_enable(ts); } } return count; }