static int cyttsp_set_sysinfo_mode(struct cyttsp *ts) { int error; memset(&ts->sysinfo_data, 0, sizeof(ts->sysinfo_data)); /* switch to sysinfo mode */ error = ttsp_send_command(ts, CY_SYSINFO_MODE); if (error) return error; /* read sysinfo registers */ msleep(CY_DELAY_DFLT); error = ttsp_read_block_data(ts, CY_REG_BASE, sizeof(ts->sysinfo_data), &ts->sysinfo_data); if (error) return error; error = cyttsp_handshake(ts); if (error) return error; if (!ts->sysinfo_data.tts_verh && !ts->sysinfo_data.tts_verl) return -EIO; return 0; }
static int cyttsp_set_operational_mode(struct cyttsp *ts) { struct cyttsp_xydata xy_data; int retval; int tries; u8 cmd = CY_OPERATE_MODE; retval = ttsp_write_block_data(ts, CY_REG_BASE, sizeof(cmd), &cmd); if (retval < 0) return retval; /* wait for TTSP Device to complete switch to Operational mode */ tries = 0; do { msleep(CY_DELAY_DFLT); retval = ttsp_read_block_data(ts, CY_REG_BASE, sizeof(xy_data), &(xy_data)); } while (!((retval == 0) && (xy_data.act_dist == CY_ACT_DIST_DFLT)) && (tries++ < CY_DELAY_MAX)); dev_dbg(ts->dev, "%s: check op ready tries=%d ret=%d dist=%02X\n", __func__, tries, retval, xy_data.act_dist); return retval; }
static int cyttsp_load_bl_regs(struct cyttsp *ts) { memset(&ts->bl_data, 0, sizeof(ts->bl_data)); ts->bl_data.bl_status = 0x10; return ttsp_read_block_data(ts, CY_REG_BASE, sizeof(ts->bl_data), &ts->bl_data); }
static int cyttsp_load_bl_regs(struct cyttsp *ts) { int retval; memset(&(ts->bl_data), 0, sizeof(struct cyttsp_bootloader_data)); retval = ttsp_read_block_data(ts, CY_REG_BASE, sizeof(ts->bl_data), &(ts->bl_data)); return retval; }
static int cyttsp_set_operational_mode(struct cyttsp *ts) { int error; error = ttsp_send_command(ts, CY_OPERATE_MODE); if (error) return error; error = ttsp_read_block_data(ts, CY_REG_BASE, sizeof(ts->xy_data), &ts->xy_data); if (error) return error; return ts->xy_data.act_dist == CY_ACT_DIST_DFLT ? -EIO : 0; }
static int cyttsp_set_operational_mode(struct cyttsp *ts) { int error; error = ttsp_send_command(ts, CY_OPERATE_MODE); if (error) return error; /* wait for TTSP Device to complete switch to Operational mode */ error = ttsp_read_block_data(ts, CY_REG_BASE, sizeof(ts->xy_data), &ts->xy_data); if (error) return error; error = cyttsp_handshake(ts); if (error) return error; return ts->xy_data.act_dist == CY_ACT_DIST_DFLT ? -EIO : 0; }
static int cyttsp_set_sysinfo_mode(struct cyttsp *ts) { int retval; int tries; u8 cmd = CY_SYSINFO_MODE; memset(&(ts->sysinfo_data), 0, sizeof(struct cyttsp_sysinfo_data)); /* switch to sysinfo mode */ retval = ttsp_write_block_data(ts, CY_REG_BASE, sizeof(cmd), &cmd); if (retval < 0) return retval; /* read sysinfo registers */ tries = 0; do { msleep(CY_DELAY_DFLT); retval = ttsp_read_block_data(ts, CY_REG_BASE, sizeof(ts->sysinfo_data), &(ts->sysinfo_data)); } while (!((retval == 0) && !((ts->sysinfo_data.tts_verh == 0) && (ts->sysinfo_data.tts_verl == 0))) && (tries++ < CY_DELAY_MAX)); dev_dbg(ts->dev, "%s: check sysinfo ready tries=%d ret=%d\n", __func__, tries, retval); dev_info(ts->dev, "%s: tv=%02X%02X ai=0x%02X%02X " "av=0x%02X%02X ci=0x%02X%02X%02X\n", "cyttsp", ts->sysinfo_data.tts_verh, ts->sysinfo_data.tts_verl, ts->sysinfo_data.app_idh, ts->sysinfo_data.app_idl, ts->sysinfo_data.app_verh, ts->sysinfo_data.app_verl, ts->sysinfo_data.cid[0], ts->sysinfo_data.cid[1], ts->sysinfo_data.cid[2]); return retval; }