Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
0
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;
}
Ejemplo n.º 6
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;
}
Ejemplo n.º 7
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;
}