icn8505           147 drivers/input/touchscreen/chipone_icn8505.c static int icn8505_read_data(struct icn8505_data *icn8505, int reg,
icn8505           150 drivers/input/touchscreen/chipone_icn8505.c 	return icn8505_read_xfer(icn8505->client, icn8505->client->addr, reg,
icn8505           154 drivers/input/touchscreen/chipone_icn8505.c static int icn8505_read_reg_silent(struct icn8505_data *icn8505, int reg)
icn8505           159 drivers/input/touchscreen/chipone_icn8505.c 	error = icn8505_read_xfer(icn8505->client, icn8505->client->addr, reg,
icn8505           167 drivers/input/touchscreen/chipone_icn8505.c static int icn8505_write_reg(struct icn8505_data *icn8505, int reg, u8 val)
icn8505           169 drivers/input/touchscreen/chipone_icn8505.c 	return icn8505_write_xfer(icn8505->client, icn8505->client->addr, reg,
icn8505           173 drivers/input/touchscreen/chipone_icn8505.c static int icn8505_read_prog_data(struct icn8505_data *icn8505, int reg,
icn8505           176 drivers/input/touchscreen/chipone_icn8505.c 	return icn8505_read_xfer(icn8505->client, ICN8505_PROG_I2C_ADDR, reg,
icn8505           180 drivers/input/touchscreen/chipone_icn8505.c static int icn8505_write_prog_data(struct icn8505_data *icn8505, int reg,
icn8505           183 drivers/input/touchscreen/chipone_icn8505.c 	return icn8505_write_xfer(icn8505->client, ICN8505_PROG_I2C_ADDR, reg,
icn8505           187 drivers/input/touchscreen/chipone_icn8505.c static int icn8505_write_prog_reg(struct icn8505_data *icn8505, int reg, u8 val)
icn8505           189 drivers/input/touchscreen/chipone_icn8505.c 	return icn8505_write_xfer(icn8505->client, ICN8505_PROG_I2C_ADDR, reg,
icn8505           199 drivers/input/touchscreen/chipone_icn8505.c static int icn8505_try_fw_upload(struct icn8505_data *icn8505,
icn8505           202 drivers/input/touchscreen/chipone_icn8505.c 	struct device *dev = &icn8505->client->dev;
icn8505           209 drivers/input/touchscreen/chipone_icn8505.c 	error = icn8505_write_prog_reg(icn8505, 0xcc3355, 0x5a);
icn8505           215 drivers/input/touchscreen/chipone_icn8505.c 	error = icn8505_write_prog_reg(icn8505, 0x040400, 0x01);
icn8505           221 drivers/input/touchscreen/chipone_icn8505.c 	error = icn8505_read_prog_data(icn8505, 0x040002, buf, 1);
icn8505           233 drivers/input/touchscreen/chipone_icn8505.c 	error = icn8505_write_prog_reg(icn8505, 0x40028, 1);
icn8505           240 drivers/input/touchscreen/chipone_icn8505.c 		error = icn8505_write_prog_data(icn8505, offset,
icn8505           247 drivers/input/touchscreen/chipone_icn8505.c 	error = icn8505_write_prog_reg(icn8505, 0x40028, 0);
icn8505           252 drivers/input/touchscreen/chipone_icn8505.c 	error = icn8505_read_prog_data(icn8505, 0x40034, buf, 2);
icn8505           261 drivers/input/touchscreen/chipone_icn8505.c 	error = icn8505_read_prog_data(icn8505, 0x4002c, buf, 4);
icn8505           272 drivers/input/touchscreen/chipone_icn8505.c 	error = icn8505_write_prog_reg(icn8505, 0x40400, 0x03);
icn8505           280 drivers/input/touchscreen/chipone_icn8505.c static int icn8505_upload_fw(struct icn8505_data *icn8505)
icn8505           282 drivers/input/touchscreen/chipone_icn8505.c 	struct device *dev = &icn8505->client->dev;
icn8505           291 drivers/input/touchscreen/chipone_icn8505.c 	error = request_firmware(&fw, icn8505->firmware_name, dev);
icn8505           298 drivers/input/touchscreen/chipone_icn8505.c 	if (icn8505_read_reg_silent(icn8505, 0x000a) == 0x85)
icn8505           302 drivers/input/touchscreen/chipone_icn8505.c 		error = icn8505_try_fw_upload(icn8505, fw);
icn8505           324 drivers/input/touchscreen/chipone_icn8505.c 	struct icn8505_data *icn8505 = dev_id;
icn8505           325 drivers/input/touchscreen/chipone_icn8505.c 	struct device *dev = &icn8505->client->dev;
icn8505           329 drivers/input/touchscreen/chipone_icn8505.c 	error = icn8505_read_data(icn8505, ICN8505_REG_TOUCHDATA,
icn8505           346 drivers/input/touchscreen/chipone_icn8505.c 		input_mt_slot(icn8505->input, touch->slot);
icn8505           347 drivers/input/touchscreen/chipone_icn8505.c 		input_mt_report_slot_state(icn8505->input, MT_TOOL_FINGER, act);
icn8505           351 drivers/input/touchscreen/chipone_icn8505.c 		touchscreen_report_pos(icn8505->input, &icn8505->prop,
icn8505           357 drivers/input/touchscreen/chipone_icn8505.c 	input_mt_sync_frame(icn8505->input);
icn8505           358 drivers/input/touchscreen/chipone_icn8505.c 	input_report_key(icn8505->input, KEY_LEFTMETA,
icn8505           360 drivers/input/touchscreen/chipone_icn8505.c 	input_sync(icn8505->input);
icn8505           365 drivers/input/touchscreen/chipone_icn8505.c static int icn8505_probe_acpi(struct icn8505_data *icn8505, struct device *dev)
icn8505           389 drivers/input/touchscreen/chipone_icn8505.c 	snprintf(icn8505->firmware_name, sizeof(icn8505->firmware_name),
icn8505           399 drivers/input/touchscreen/chipone_icn8505.c 	struct icn8505_data *icn8505;
icn8505           409 drivers/input/touchscreen/chipone_icn8505.c 	icn8505 = devm_kzalloc(dev, sizeof(*icn8505), GFP_KERNEL);
icn8505           410 drivers/input/touchscreen/chipone_icn8505.c 	if (!icn8505)
icn8505           424 drivers/input/touchscreen/chipone_icn8505.c 	icn8505->client = client;
icn8505           425 drivers/input/touchscreen/chipone_icn8505.c 	icn8505->input = input;
icn8505           426 drivers/input/touchscreen/chipone_icn8505.c 	input_set_drvdata(input, icn8505);
icn8505           428 drivers/input/touchscreen/chipone_icn8505.c 	error = icn8505_probe_acpi(icn8505, dev);
icn8505           432 drivers/input/touchscreen/chipone_icn8505.c 	error = icn8505_upload_fw(icn8505);
icn8505           436 drivers/input/touchscreen/chipone_icn8505.c 	error = icn8505_read_data(icn8505, ICN8505_REG_CONFIGDATA,
icn8505           448 drivers/input/touchscreen/chipone_icn8505.c 	touchscreen_parse_properties(input, true, &icn8505->prop);
icn8505           461 drivers/input/touchscreen/chipone_icn8505.c 					IRQF_ONESHOT, client->name, icn8505);
icn8505           471 drivers/input/touchscreen/chipone_icn8505.c 	i2c_set_clientdata(client, icn8505);
icn8505           477 drivers/input/touchscreen/chipone_icn8505.c 	struct icn8505_data *icn8505 = i2c_get_clientdata(to_i2c_client(dev));
icn8505           479 drivers/input/touchscreen/chipone_icn8505.c 	disable_irq(icn8505->client->irq);
icn8505           481 drivers/input/touchscreen/chipone_icn8505.c 	icn8505_write_reg(icn8505, ICN8505_REG_POWER, ICN8505_POWER_HIBERNATE);
icn8505           488 drivers/input/touchscreen/chipone_icn8505.c 	struct icn8505_data *icn8505 = i2c_get_clientdata(to_i2c_client(dev));
icn8505           491 drivers/input/touchscreen/chipone_icn8505.c 	error = icn8505_upload_fw(icn8505);
icn8505           495 drivers/input/touchscreen/chipone_icn8505.c 	enable_irq(icn8505->client->irq);